StackExchange.Redis下載地址; https://github.com/StackExchange/StackExchange.Redis/blob/master/Docs/Basics.md
以下轉載來源:http://www.cnblogs.com/deosky/p/4846111.html 在此表示感謝
在StackExchange.Redis中最重要的對象是ConnectionMultiplexer類, 它存在於StackExchange.Redis命名空間中。 這個類隱藏了Redis服務的操作細節,ConnectionMultiplexer類做了很多東西, 在所有調用之間它被設計為共享和重用的。 不應該為每一個操作都創建一個ConnectionMultiplexer 。 ConnectionMultiplexer是線程安全的 , 推薦使用下面的方法。 在所有后續示例中 , 都假定你已經實例化好了一個ConnectionMultiplexer類,它將會一直被重用 , 現在我們來創建一個ConnectionMultiplexer實例。它是通過ConnectionMultiplexer.Connect 或者 ConnectionMultiplexer.ConnectAsync, 傳遞一個連接字符串或者一個ConfigurationOptions 對象來創建的。 連接字符串可以是以逗號分割的多個服務的節點, 我們僅僅需要連接一個在本地計算機中的redis服務,redis服務的默認端口是6379.
using StackExchange.Redis; ... ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost"); // ^^^ store and re-use this!!!
注意 : ConnectionMultiplexer 實現了IDisposable接口當我們不再需要是可以將其釋放的 , 這里我故意不使用 using 來釋放他。 簡單來講創建一個ConnectionMultiplexer是十分昂貴的 , 一個好的主意是我們一直重用一個ConnectionMultiplexer對象。 一個復雜的的場景中可能包含有主從復制 , 對於這種情況,只需要指定所有地址在連接字符串中(它將會自動識別出主服務器) ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("server1:6379,server2:6379");
假設這里找到了兩台主服務器,將會對兩台服務進行裁決選出一台作為主服務器來解決這個問題 , 這種情況是非常罕見的 ,我們也應該避免這種情況的發生。
現在你已經擁有了一個 ConnectionMultiplexer , 下面三件事情可能是你想要做的。
1. 訪問數據庫。(注意在使用集群的情況下,一個數據庫可能會分部在多個節點中) 2. 使用redis的發布訂閱功能 3. 維護和監控一台服務器
訪問數據庫 訪問數據庫的操作非常簡單:
IDatabase db = redis.GetDatabase();
GetDatabase 返回一個IDatabase接口。 注意 redis允許配置多個數據庫,可以在調用GetDatabase() 時候指定數據庫.另外,如果你計划使用異步的api , Task.AsyncState 必須擁有一個值 ,也可以這樣指定。
int databaseNumber = ... object asyncState = ... IDatabase db = redis.GetDatabase(databaseNumber, asyncState);
現在你已經擁有了一個 IDatabase 對象 , 他可以對redis數據庫進行操作。所有的方法都有同步和異步兩個版本 , 按照微軟的命名約定 ,所有的異步方法都以Async結尾。
最簡單的操作 存儲和獲取一個值 。
string value = "abcdefg"; db.StringSet("mykey", value); ... string value = db.StringGet("mykey"); Console.WriteLine(value); // writes: "abcdefg"
String前綴這里代表的是Redis中的String類型 , 和.net中的String類型有很大的區別 , 盡管兩者都可以保存字符串類型。然后 ,Redis允許鍵值為二進制數據 , 示例如下:
byte[] key = ..., value = ...; db.StringSet(key, value); ... byte[] value = db.StringGet(key);
StackExchange.Redis 支持所有的 redis shell命令, 具體可以參考redis官網。