1. 程式人生 > >高效能網站架構設計之快取篇(2)- Redis C#客戶端

高效能網站架構設計之快取篇(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 的配置。