小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Redis中文API

 賈朋亮博客 2015-03-28
事實上,IRedisClient里面的很多方法,其實就是Redis的命令名。只要對Redis的命令熟悉一點就能夠非??焖俚乩斫夂驼莆者@些方法,趁著現(xiàn)在對Redis不是特別了解,我也對著命令來了解一下這些方法。

一、屬性

  IRedisClient的屬性如下:

屬性 說明
ConnectTimeout  連接超時
Db 當前數(shù)據(jù)庫的ID或下標
DbSize  當前數(shù)據(jù)庫的 key 的數(shù)量
HadExceptions   
Hashes  存儲復雜對象,一個value中有幾個field 
Host  Redis的Server服務器主機地址
Info  返回關于 Redis 服務器的各種信息和統(tǒng)計數(shù)值
LastSave  最近一次 Redis 成功將數(shù)據(jù)保存到磁盤上的時間
Lists  當前數(shù)據(jù)庫中所有的List集合
Password  密碼
Port  Redis的Server端口
RetryCount  重試次數(shù)
RetryTimeout  重試超時
SendTimeout  發(fā)送超時
Sets  當前數(shù)據(jù)庫中所有的HashSet<T>集合
SortedSets  當前數(shù)據(jù)庫中所有的SortedSet<T>集合
this[string key] 通過索引的方式(key)訪問一個字符串類型值

  代碼示例:

復制代碼
        RClient.AddItemToSet("蜀國", "劉備");
        RClient.AddItemToSet("蜀國", "關羽");
        RClient.AddItemToSet("蜀國", "張飛");

        IHasNamed<IRedisSet> rr = RClient.Sets;
        HashSet<string> HashSetString = rr["蜀國"].GetAll();
        foreach (string str in HashSetString)
        {
            Response.Write(str);
        }
復制代碼

 

二、IRedisClient數(shù)據(jù)操作

  1、ICacheClient接口

  IRedisClient實現(xiàn)了接口ICacheClient,其中ICacheClient主要提供的功能如下:

方法 說明
Add 根據(jù)傳入的key-value添加一條記錄,當key已存在返回false
FlushAll 使所有緩存失效(清除Redis所有數(shù)據(jù)庫的所有Key)
Get 根據(jù)傳入的key獲取一條記錄的值
GetAll 根據(jù)傳入的多個key獲取多條記錄的值
Remove 根據(jù)傳入的key移除一條記錄
RemoveAll 根據(jù)傳入的多個key移除多條記錄
Replace 根據(jù)傳入的key覆蓋一條記錄的值,當key不存在不會添加
Set 根據(jù)傳入的key修改一條記錄的值,當key不存在則添加
SetAll 根據(jù)傳入的多個key覆蓋多條記錄
Increment  
Decrement  

  特別說明,比如添加的主要方法包括兩個重載,一個多了個DateTime類型參數(shù),一個多了TimeSpan類型的參數(shù)。這兩個都是緩存失效的時間(相當于緩存依賴里的絕對過期時間)。

  • DateTime失效點:到達該時間點,立即失效;
  • TimeSpan失效點:經過該時間段,立即失效;

  簡單示例:

復制代碼
        public ActionResult Index()
        {
            RedisClientManagerConfig RedisConfig = new RedisClientManagerConfig();
            RedisConfig.AutoStart = true;
            RedisConfig.MaxReadPoolSize = 60;
            RedisConfig.MaxWritePoolSize = 60;

            PooledRedisClientManager prcm = new PooledRedisClientManager(new List<string>() { "127.0.0.1" }, new List<string>() { "127.0.0.1" }, RedisConfig);

            using (IRedisClient RClient = prcm.GetClient())
            {
                RClient.Add("c1", "緩存1");
                RClient.Set("c1", "緩存2");
                RClient.Replace("c1", "緩存3");
                Response.Write(RClient.Get<string>("c1"));
                RClient.Remove("c1");
                Response.Write(RClient.Get<string>("c1") == null);
            }

            return Content("");
        }
復制代碼

  2、簡單功能

  當然,除了實現(xiàn)ICacheClient接口的功能外,對于基本操作,實際上也還有很多功能

方法 說明
AppendToValue 根據(jù)Key將參數(shù)value追加到原有值的結尾
ContainsKey 判斷Key在本數(shù)據(jù)庫內是否已被使用(包括各種類型、內置集合等等)
GetAllKeys 獲取所有的Keys集合
DecrementValue 根據(jù)指定的Key,將值減1(僅整型有效)
DecrementValueBy 根據(jù)指定的Key,將值減去指定值(僅整型有效)
IncrementValue 根據(jù)指定的Key,將值加1(僅整型有效)
IncrementValueBy 根據(jù)指定的Key,將值加上指定值(僅整型有效)
RenameKey 重命名一個Key,值不變
SearchKeys 從數(shù)據(jù)庫中查找名稱相等的Keys的集合,特殊模式如h[ae]llo,僅英文有效。
GetRandomKey 隨機獲取一個已經被使用的Key
GetValue 根據(jù)Key獲取值,只對string類型有效
GetValues 根據(jù)輸入的多個Key獲取多個值,支持泛型
GetTimeToLive 獲取指定Key的項距離失效點的TimeSpan
GetSortedSetCount 獲取已排序集合的項的數(shù)目,參數(shù)支持下標以及score篩選
ExpireEntryAt 根據(jù)指定的key設置一項的到期時間(DateTime)
ExpireEntryIn 根據(jù)指定的key設置一項的到期時間(TimeSpan)
FlushDb 清除本數(shù)據(jù)庫的所有數(shù)據(jù)
FlushAll 清除所有數(shù)據(jù)庫的所有數(shù)據(jù)
Shutdown 停止所有客戶端,保存,關閉Redis服務
Save 保存數(shù)據(jù)DB文件到硬盤
SaveAsync 異步保存
RewriteAppendOnlyFileAsync 只在異步情況下將數(shù)據(jù)追加到服務器文件
WriteAll  
PublishMessage 將Message發(fā)送到指定的頻道
StoreObject  
GetValuesMap 以鍵值對的方式返回值類型相同的多條數(shù)據(jù),支持泛型與返回字符串。
字符串  
SetEntry 根據(jù)Key修改一個值,存在則覆蓋。(只能設置字符串)
SetEntryIfNotExists 根據(jù)Key設置一個值,僅僅當Key不存在時有效,如Key已存在則不修改(只支持字符串)
SetEntryIfNotExists 根據(jù)Key設置一個值,返回舊值。
GetEntryType

根據(jù)Key獲取當前存儲的值是什么類型:

None = 0
String = 1
List = 2
Set = 3
SortedSet = 4
Hash = 5

  

  

  3、內置集合

  比如,IRedisClient支持在內部維護如下集合類型的數(shù)據(jù):

  • List<T>
  • 排序的List<T>(.Net 4.0后的SortedSet)
  • HashSet<T>

  關于如下4種類型數(shù)據(jù)的操作:

方法 說明
AddItemToList 添加一個項到內部的List<T>
AddItemToSet 添加一個項到內部的HashSet<T>
AddItemToSortedSet 添加一個項到內部的排序List<T>,其中重載方法多了個score:排序值。優(yōu)先按照score從小->大排序,否則按值小到大排序
AddRangeToList 一次過將參數(shù)中的List<T>中的多個值添加入內部的List<T>
AddRangeToSet 一次過將參數(shù)中的HashSet<T>中的多個值添加入內部的HashSet<T>
AddRangeToSortedSet 一次過將參數(shù)中的List<T>中的多個值添加到內部List<T>,重載方法的score表示排序值。
GetAllItemsFromList 獲取指定ListId的內部List<T>的所有值
GetAllItemsFromSet 獲取指定SetId的內部HashSet<T>的所有值
GetAllItemsFromSortedSet 獲取指定ListId的內部已排序List<T>的所有值
GetAllItemsFromSortedSetDesc 獲取指定ListId的內部已排序List<T>的所有值,不過獲取的值是倒序排列后的。
GetRangeFromList 獲取指定ListId的內部List<T>中指定下標范圍的數(shù)據(jù)
GetRangeFromSortedList 獲取指定ListId的內部已排序List<T>中指定下標范圍的數(shù)據(jù)
GetRangeFromSortedSet 獲取指定SetId的內部HashSet<T>中指定下標范圍的數(shù)據(jù)
GetRangeFromSortedSetByHighestScore 獲取指定SetId的內部HashSet<T>中按照score由高->低排序后的分值范圍的數(shù)據(jù),并且支持skip、take
GetRangeFromSortedSetByLowestScore 同上,只不過是按score分值由低->高取一定范圍內的數(shù)據(jù)
GetRangeFromSortedSetDesc 按倒序獲取內部HashSet<T>的指定下標范圍內的數(shù)據(jù)
GetRangeWithScoresFromSortedSet 與From相同,只不過獲取的是鍵值對,數(shù)據(jù)中帶分值score
GetRangeWithScoresFromSortedSetByHighestScore 同上
GetRangeWithScoresFromSortedSetByLowestScore 同上
GetRangeWithScoresFromSortedSetDesc 同上
GetAllWithScoresFromSortedSet 獲取指定ListId的已排序的內部List<T>與其score
GetSortedItemsFromList 從指定ListId的List<T>中獲取按指定排序的集合,支持Skip,Take
GetSortedEntryValues 從指定ListId的List<T>中獲取經過排序指定開始位置與個數(shù)的項
RemoveAllFromList 移除指定ListId的內部List<T>
RemoveItemFromList 移除指定ListId的內部List<T>中第二個參數(shù)值相等的那一項
RemoveItemFromSet 從指定SetId的內部HashSet<T>中移除與第二個參數(shù)值相等的那一項
RemoveItemFromSortedSet 從指定ListId中已排序的內部List<T>中移除值相等的那一項
RemoveRangeFromSortedSet 從指定ListId已排序的List<T>中移除指定下標范圍的項
RemoveRangeFromSortedSetByScore 從指定ListId已排序的List<T>中移除指定score范圍的項
RemoveStartFromList 從指定ListId移除開頭那一項
RemoveEndFromList 從指定ListId移除末尾那項
BlockingRemoveStartFromList 阻塞地從指定ListId移除開頭那一項
BlockingRemoveStartFromLists  
RemoveEntry 根據(jù)傳入的多個ListId,清除多個內部List<T>
RemoveAllLuaScripts 清除所有的 Lua 腳本緩存
RemoveEntryFromHash  
GetItemFromList 根據(jù)ListId和下標獲取一項
GetItemIndexInSortedSet 根據(jù)List和值,獲取內置的排序后的List<T>的下標
GetItemIndexInSortedSetDesc 同上,不過順序相反
GetItemScoreInSortedSet 根據(jù)傳入的ListId和值獲取內置List<T>項的score
GetListCount 根據(jù)ListId,獲取內置的List<T>的項數(shù)
GetSetCount 根據(jù)SetId,獲取內置的HashSet<T>的項數(shù)
GetIntersectFromSets 從輸入的多個HashSet<T>的Id中獲取交集
GetUnionFromSets 從輸入的多個HashSet<T>的Id中獲取并集
GetRandomItemFromSet 從指定ListId的集合中獲取隨機項
StoreUnionFromSets 將多個HashSet<T>,合并為第一個參數(shù)中的一個大HashSet<T>,第一個參數(shù)中的HashSet<T>原本可以不存在
StoreUnionFromSortedSets 將多個SortedSet<T>,合并為第一個參數(shù)中的一個大SortedSet<T>,第一個參數(shù)中的SortedSet<T>原本可以不存在
StoreIntersectFromSets 將交集結果保存在第一個參數(shù)的集合中,對HastSet<T>作用
StoreIntersectFromSortedSets 將交集結果保存在第一個參數(shù)的集合中,對SortedSet<T>作用
EnqueueItemOnList 將一個元素存入指定ListId的List<T>的頭部
DequeueItemFromList 將指定ListId的List<T>末尾的那個元素出列,返回出列元素
BlockingDequeueItemFromList 將指定ListId的List<T>末尾的那個元素出列,區(qū)別是:會阻塞該List<T>,支持超時時間,返回出列元素
BlockingDequeueItemFromLists  
BlockingPopItemFromList 阻塞地將指定ListId的List<T>末尾的哪一個元素移除
BlockingPopItemFromLists  
BlockingPopAndPushItemBetweenLists 將第一個集合的元素移除并添加到第二個集合的頭部,返回該元素,會同時阻塞兩個集合
PopItemFromList 從指定ListId的List<T>末尾移除一項并返回
PopItemFromSet 從指定SetId的HashSet<T>末尾移除一項并返回
PopItemWithHighestScoreFromSortedSet 從指定SetId的HashSet<T>移除score最高的那一項
PopItemWithLowestScoreFromSortedSet 從指定SetId的HashSet<T>移除score最低的那一項
PopAndPushItemBetweenLists 將第一個集合的元素移除并添加到第二個集合的頭部
SetContainsItem 判斷指定SetId的HashSet<T>中是否包含指定的value(僅僅支持字符串)
SortedSetContainsItem 判斷SortedSet是否包含一個鍵
TrimList 根據(jù)ListId裁剪內置集合,保留下去from->at之間(包含from于at)的元素,其余的裁去
IncrementItemInSortedSet 為指定ListId的集合中的value的分值score加上指定分值
SetItemInList 重新設置指定ListId和下標的value為指定值
PushItemToList 在指定ListId的內置List<T>中入列一個鍵值對,在末尾
PrependItemToList 將一個值插入到List<T>的最前面
PrependRangeToList 一次性添加多個值到指定ListId的內置List<T>中
GetDifferencesFromSet 返回存在于第一個集合,但是不存在于其他集合的數(shù)據(jù)。差集
StoreDifferencesFromSet 將求差集的結果保存在第一個參數(shù)的集合中
MoveBetweenSets 將元素從一個集合移動到另一個集合的開頭。(刪除與添加)

  下面僅給出一個List<T>與HashSet<T>的示例:

復制代碼
        //內部維護一個List<T>集合
        RClient.AddItemToList("蜀國", "劉備");
        RClient.AddItemToList("蜀國", "關羽");
        RClient.AddItemToList("蜀國", "張飛");
        List<string> ListString = RClient.GetAllItemsFromList("蜀國");
        foreach (string str in ListString)
        {
            Response.Write(str);    //輸出 劉備 關羽 張飛
        }
               
        RClient.AddItemToSet("魏國", "曹操");
        RClient.AddItemToSet("魏國", "曹操");
        RClient.AddItemToSet("魏國", "典韋");
        HashSet<string> HashSetString = RClient.GetAllItemsFromSet("魏國");
        foreach (string str in HashSetString)
        {
            Response.Write(str);    //輸出 典韋 曹操
        }
復制代碼

   下面再給一個范圍Range操作示例:

復制代碼
        //內部維護一個List<T>集合
        RClient.AddItemToSortedSet("蜀國", "劉備", 5);
        RClient.AddItemToSortedSet("蜀國", "關羽", 2);
        RClient.AddItemToSortedSet("蜀國", "張飛", 3);
        IDictionary<String,double> DicString = RClient.GetRangeWithScoresFromSortedSet("蜀國", 0, 2);
        foreach (var r in DicString)
        {
            Response.Write(r.Key + ":" + r.Value);    //輸出 
        }
復制代碼

   3、內置Hash

  內部維護一個HashTable

方法 說明
SetEntryInHash 設置一個鍵值對入Hash表,如果哈希表的key存在則覆蓋
SetEntryInHashIfNotExists 當哈希表的key未被使用時,設置一個鍵值對如Hash表
GetHashValues 根據(jù)HashId獲取多個改HashId下的多個值
GetValuesFromHash 根據(jù)HashId和Hash表的Key獲取多個值(支持多個key)
GetValueFromHash 根據(jù)HashId和Hash表的Key獲取單個值
GetHashKeys 獲取指定HashId下的所有Key
GetHashValues 獲取指定HashId下的所有值
GetHashCount 獲取指定HashId下的所有Key數(shù)量
HashContainsEntry 判斷指定HashId的哈希表中是否包含指定的Key
IncrementValueInHash 將指定HashId的哈希表中的值加上指定值
StoreAsHash 將一個對象存入Hash(支持泛型)
GetFromHash 根據(jù)Id從Hash表中取出對象(支持泛型)
SetRangeInHash 通過IEnumerable<KeyValuePair<string, string>>一次性設置多個值,當內部Hash的key不存在則添加,存在則覆蓋

  代碼示例:

        RClient.SetEntryInHash("xxx","key","123");
        List<KeyValuePair<string, string>> keyValuePairs = new List<KeyValuePair<string, string>>();
        KeyValuePair<string, string> kvp = new KeyValuePair<string, string>("key", "1");
        keyValuePairs.Add(kvp);
        RClient.SetRangeInHash("xxx", keyValuePairs);

  

  4、Lua Script

  從 Redis 2.6.0 版本開始,通過內置的 Lua 解釋器,可以執(zhí)行各種Lua腳本。IRedisClient支持執(zhí)行Lua腳本,其供用于執(zhí)行Lua腳本的方法如下:

方法 說明
LoadLuaScript 將一個腳本裝入腳本緩存,但并不立即運行它
KillRunningLuaScript 停止正在運行的指定Id的腳本
ExecLuaAsInt  
ExecLuaAsList  
ExecLuaAsString  
ExecLuaShaAsInt  
ExecLuaShaAsList  
ExecLuaShaAsString  
HasLuaScript 判斷Lua腳本是否在腳本緩存里
CalculateSha1  
WhichLuaScriptsExists  

  關于Lua腳本可以到這里去了解:http://www.cnblogs.com/ly4cn/archive/2006/08/04/467550.html

  5、事務

  Redis中的事務

方法 說明
Watch 監(jiān)視一個(或多個) key ,如果在事務執(zhí)行之前這個(或這些) key 被其他命令所改動,那么事務將被打斷。
UnWatch 取消 WATCH 命令對所有 key 的監(jiān)視
AcquireLock 申請對一個Key加鎖(期間其他對象不能訪問)
CreateTransaction 創(chuàng)建一個事務,返回一個IRedisTransaction對象
CreateSubscription 創(chuàng)建一個訂閱事件返回一個IRedisSubscription對象
CreatePipeline 返回一個IRedisPipeline對象

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多