2020年11月25日星期三

Redis分布式缓存系列(六)

本系列将和大家分享Redis分布式缓存,本章主要简单介绍下Redis中的List类型,以及如何使用Redis解决博客数据分页、生产者消费者模型和发布订阅等问题。

本系列将和大家分享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);  }  

没有评论:

发表评论