高性能網站架構設計之緩存篇(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  Homepage demisbellot 這是Miguel De Icaza寫的C#客戶端的一個增強版分支。
Booksleeve  Homepage marcgravell 通過堆交換實現的高性能客戶端。
Sider Homepage chakrit .NET4.0提供的簡約客戶端
TeamDev Redis Client Repository TeamDevPerugia 基於redis-sharp,提供基本通信功能的redis客戶端,但是有一些不同的地方。
redis-sharp Repository migueldeicaza

用哪個好呢?我也不知道,那就先試試第一個好了,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 的配置。


免責聲明!

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



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