本系列将和大家分享Redis分布式缓存,本章主要简单介绍下Redis中的List类型,以及如何使用Redis解决博客数据分页、生产者消费者模型和发布订阅等问题。
Redis List的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销,Redis内部的很多实现,包括发送缓冲队列等也都是用这个数据结构。
List类型主要用于队列和栈,先进先出,后进先出等。
存储形式:key--LinkList<value>
首先先给大家Show一波Redis中与List类型相关的API:
using System;using System.Collections.Generic;using ServiceStack.Redis;namespace TianYa.Redis.Service{ /// <summary> /// Redis List的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销, /// Redis内部的很多实现,包括发送缓冲队列等也都是用这个数据结构。 /// </summary> public class RedisListService : RedisBase { #region Queue队列(先进先出) /// <summary> /// 入队 /// </summary> /// <param name="listId">集合Id</param> /// <param name="value">入队的值</param> public void EnqueueItemOnList(string listId, string value) { base._redisClient.EnqueueItemOnList(listId, value); } /// <summary> /// 出队 /// </summary> /// <param name="listId">集合Id</param> /// <returns>出队的值</returns> public string DequeueItemFromList(string listId) { return base._redisClient.DequeueItemFromList(listId); } /// <summary> /// 出队(阻塞) /// </summary> /// <param name="listId">集合Id</param> /// <param name="timeOut">阻塞时间(超时时间)</param> /// <returns>出队的值</returns> public string BlockingDequeueItemFromList(string listId, TimeSpan? timeOut) { return base._redisClient.BlockingDequeueItemFromList(listId, timeOut); } /// <summary> /// 从多个list中出队(阻塞) /// </summary> /// <param name="listIds">集合Id</param> /// <param name="timeOut">阻塞时间(超时时间)</param> /// <returns>返回出队的 listId & Item</returns> public ItemRef BlockingDequeueItemFromLists(string[] listIds, TimeSpan? timeOut) { return base._redisClient.BlockingDequeueItemFromLists(listIds, timeOut); }
没有评论:
发表评论