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
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM