高效能網站架構設計之快取篇(2)- Redis C#客戶端
在上一篇中我簡單的介紹瞭如何利用redis自帶的客戶端連線server並執行命令來操作它,但是如何在我們做的專案或產品中操作這個強大的記憶體資料庫呢?首先我們來了解一下redis的原理吧。
官方文件上是這樣說的:Redis在TCP埠6379上監聽到來的連線,客戶端連線到來時,Redis伺服器為此建立一個TCP連線。
意思就是 redis的server端和client端是通過TCP/IP協議進行通訊的,server預設在6379埠上監聽客戶端的連線,所以我們只需要通過 TcpClient 類建立一個 client,並主動去連線指定Host的6379埠就可以了。TcpClient 建立一個連線應該還是一件比較容易的事情。可是連上了之後怎麼辦?那麼多的命令難道需要我們一個一個的去實現嗎?那是一件多麼令人頭痛的事情啊,我們還是去找一個現成的吧,這是國人最願意幹的事情。
不用找了,哥給你們列了幾個在下面:
ServiceStack.Redis ★ | 這是Miguel De Icaza寫的C#客戶端的一個增強版分支。 |
TeamDev Redis Client | 基於redis-sharp,提供基本通訊功能的redis客戶端,但是有一些不同的地方。 |
用哪個好呢?我也不知道,那就先試試第一個好了,ServiceStack可是除了不少好作品啊,如ServiceStack.OrmLite、ServiceStack.Text等。
先別急著去下載他,我們先建立個C#工程吧。我的工程建好了,如圖:
然後通過NuGet獲取ServiceStack.Redis,我這裡獲取的時4.0版,這個版本的免費版在某些功能上開始有限制了,看來有商業化的趨勢。
新增好了,我們就可以直接用了。
開啟Program檔案,Main方法如下:
1 public static void Main( string[] args ) 2 { 3 const string HOST_IP = "127.0.0.1"; 4 5 using( var redis = new RedisClient( HOST_IP ) ) 6 { 7 redis.FlushAll(); 8 9 redis.Set( "testkey001", "testvalue001" ); 10 11 var value = redis.Get( "testkey001" ); 12 13 Console.WriteLine( value ); 14 } 15 16 Console.ReadLine(); 17 }
執行一下試試。
我勒個去,出異常了,could not connect to redis Instance at 127.0.0.1:6379,server 忘記打開了。
趕緊去開啟終端執行一下 ./redis-server 命令,再執行一下,發現沒有返回 testvalue001,而是System.Byte[]。
是的,呼叫 Get 方法返回的型別就是byte陣列,ServiceStack.Redis 提供了另一個 Get 方法的過載,要想返回 string,我們只需要改成這樣:
var value = redis.Get<string>( "testkey001" );
這次返回的結果就沒錯了。
ServiceStack.Redis 還提供了一系列的其他功能函式,都對應著 Redis 命令,整個 API 的命令還是比較規範的,一看方法名就能大致明白是什麼意思,風格非常的 restful。
關於其他函式的功能,我也不想一一列舉了,網上一搜一大把,這些放一個連線供大家參考。
下一篇我將為大家介紹 Redis 的配置。