在上一篇中我簡單的介紹了如何利用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 的配置。