zoukankan      html  css  js  c++  java
  • Redis封装之List

      /// <summary>
        ///  Redis list的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销,
        ///  Redis内部的很多实现,包括发送缓冲队列等也都是用的这个数据结构。  
        /// </summary>
        public class RedisListService : RedisBase
        {
            #region 赋值
            /// <summary>
            /// 从左侧向list中添加值
            /// </summary>
            public void LPush(string key, string value)
            {
                RedisBase.iClient.PushItemToList(key, value);
            }
            /// <summary>
            /// 从左侧向list中添加值,并设置过期时间
            /// </summary>
            public void LPush(string key, string value, DateTime dt)
            {
                RedisBase.iClient.PushItemToList(key, value);
                RedisBase.iClient.ExpireEntryAt(key, dt);
            }
            /// <summary>
            /// 从左侧向list中添加值,设置过期时间
            /// </summary>
            public void LPush(string key, string value, TimeSpan sp)
            {
                RedisBase.iClient.PushItemToList(key, value);
                RedisBase.iClient.ExpireEntryIn(key, sp);
            }
            /// <summary>
            /// 从左侧向list中添加值
            /// </summary>
            public void RPush(string key, string value)
            {
                RedisBase.iClient.PrependItemToList(key, value);
            }
            /// <summary>
            /// 从右侧向list中添加值,并设置过期时间
            /// </summary>    
            public void RPush(string key, string value, DateTime dt)
            {
                RedisBase.iClient.PrependItemToList(key, value);
                RedisBase.iClient.ExpireEntryAt(key, dt);
            }
            /// <summary>
            /// 从右侧向list中添加值,并设置过期时间
            /// </summary>        
            public void RPush(string key, string value, TimeSpan sp)
            {
                RedisBase.iClient.PrependItemToList(key, value);
                RedisBase.iClient.ExpireEntryIn(key, sp);
            }
            /// <summary>
            /// 添加key/value
            /// </summary>     
            public void Add(string key, string value)
            {
                RedisBase.iClient.AddItemToList(key, value);
            }
            /// <summary>
            /// 添加key/value ,并设置过期时间
            /// </summary>  
            public void Add(string key, string value, DateTime dt)
            {
                RedisBase.iClient.AddItemToList(key, value);
                RedisBase.iClient.ExpireEntryAt(key, dt);
            }
            /// <summary>
            /// 添加key/value。并添加过期时间
            /// </summary>  
            public void Add(string key, string value, TimeSpan sp)
            {
                RedisBase.iClient.AddItemToList(key, value);
                RedisBase.iClient.ExpireEntryIn(key, sp);
            }
            /// <summary>
            /// 为key添加多个值
            /// </summary>  
            public void Add(string key, List<string> values)
            {
                RedisBase.iClient.AddRangeToList(key, values);
            }
            /// <summary>
            /// 为key添加多个值,并设置过期时间
            /// </summary>  
            public void Add(string key, List<string> values, DateTime dt)
            {
                RedisBase.iClient.AddRangeToList(key, values);
                RedisBase.iClient.ExpireEntryAt(key, dt);
            }
            /// <summary>
            /// 为key添加多个值,并设置过期时间
            /// </summary>  
            public void Add(string key, List<string> values, TimeSpan sp)
            {
                RedisBase.iClient.AddRangeToList(key, values);
                RedisBase.iClient.ExpireEntryIn(key, sp);
            }
            #endregion
    
            #region 获取值
            /// <summary>
            /// 获取list中key包含的数据数量
            /// </summary>  
            public long Count(string key)
            {
                return RedisBase.iClient.GetListCount(key);
            }
            /// <summary>
            /// 获取key包含的所有数据集合
            /// </summary>  
            public List<string> Get(string key)
            {
                return RedisBase.iClient.GetAllItemsFromList(key);
            }
            /// <summary>
            /// 获取key中下标为star到end的值集合
            /// </summary>  
            public List<string> Get(string key, int star, int end)
            {
                return RedisBase.iClient.GetRangeFromList(key, star, end);
            }
            #endregion
    
            #region 阻塞命令
            /// <summary>
            ///  阻塞命令:从list中keys的尾部移除一个值,并返回移除的值,阻塞时间为sp
            /// </summary>  
            public string BlockingPopItemFromList(string key, TimeSpan? sp)
            {
                return RedisBase.iClient.BlockingDequeueItemFromList(key, sp);
            }
            /// <summary>
            ///  阻塞命令:从list中keys的尾部移除一个值,并返回移除的值,阻塞时间为sp
            /// </summary>  
            public ItemRef BlockingPopItemFromLists(string[] keys, TimeSpan? sp)
            {
                return RedisBase.iClient.BlockingPopItemFromLists(keys, sp);
            }
            /// <summary>
            ///  阻塞命令:从list中keys的尾部移除一个值,并返回移除的值,阻塞时间为sp
            /// </summary>  
            public string BlockingDequeueItemFromList(string key, TimeSpan? sp)
            {
                return RedisBase.iClient.BlockingDequeueItemFromList(key, sp);
            }
            /// <summary>
            /// 阻塞命令:从list中keys的尾部移除一个值,并返回移除的值,阻塞时间为sp
            /// </summary>  
            public ItemRef BlockingDequeueItemFromLists(string[] keys, TimeSpan? sp)
            {
                return RedisBase.iClient.BlockingDequeueItemFromLists(keys, sp);
            }
            /// <summary>
            /// 阻塞命令:从list中key的头部移除一个值,并返回移除的值,阻塞时间为sp
            /// </summary>  
            public string BlockingRemoveStartFromList(string keys, TimeSpan? sp)
            {
                return RedisBase.iClient.BlockingRemoveStartFromList(keys, sp);
            }
            /// <summary>
            /// 阻塞命令:从list中key的头部移除一个值,并返回移除的值,阻塞时间为sp
            /// </summary>  
            public ItemRef BlockingRemoveStartFromLists(string[] keys, TimeSpan? sp)
            {
                return RedisBase.iClient.BlockingRemoveStartFromLists(keys, sp);
            }
            /// <summary>
            /// 阻塞命令:从list中一个fromkey的尾部移除一个值,添加到另外一个tokey的头部,并返回移除的值,阻塞时间为sp
            /// </summary>  
            public string BlockingPopAndPushItemBetweenLists(string fromkey, string tokey, TimeSpan? sp)
            {
                return RedisBase.iClient.BlockingPopAndPushItemBetweenLists(fromkey, tokey, sp);
            }
            #endregion
    
            #region 删除
            /// <summary>
            /// 从尾部移除数据,返回移除的数据
            /// </summary>  
            public string PopItemFromList(string key)
            {
                return RedisBase.iClient.PopItemFromList(key);
            }
            /// <summary>
            /// 移除list中,key/value,与参数相同的值,并返回移除的数量
            /// </summary>  
            public long RemoveItemFromList(string key, string value)
            {
                return RedisBase.iClient.RemoveItemFromList(key, value);
            }
            /// <summary>
            /// 从list的尾部移除一个数据,返回移除的数据
            /// </summary>  
            public string RemoveEndFromList(string key)
            {
                return RedisBase.iClient.RemoveEndFromList(key);
            }
            /// <summary>
            /// 从list的头部移除一个数据,返回移除的值
            /// </summary>  
            public string RemoveStartFromList(string key)
            {
                return RedisBase.iClient.RemoveStartFromList(key);
            }
            #endregion
    
            #region 其它
            /// <summary>
            /// 从一个list的尾部移除一个数据,添加到另外一个list的头部,并返回移动的值
            /// </summary>  
            public string PopAndPushItemBetweenLists(string fromKey, string toKey)
            {
                return RedisBase.iClient.PopAndPushItemBetweenLists(fromKey, toKey);
            }
            #endregion
        }
  • 相关阅读:
    Java实现 蓝桥杯VIP 算法训练 校门外的树
    Java实现 蓝桥杯VIP 算法训练 统计单词个数
    Java实现 蓝桥杯VIP 算法训练 统计单词个数
    Java实现 蓝桥杯VIP 算法训练 开心的金明
    Java实现 蓝桥杯VIP 算法训练 开心的金明
    Java实现 蓝桥杯 算法训练 纪念品分组
    Java实现 蓝桥杯 算法训练 纪念品分组
    Java实现 蓝桥杯VIP 算法训练 校门外的树
    Java实现 蓝桥杯VIP 算法训练 统计单词个数
    Java实现 蓝桥杯VIP 算法训练 开心的金明
  • 原文地址:https://www.cnblogs.com/marshhu/p/6806361.html
Copyright © 2011-2022 走看看