StackExchange.Redis 基本使用 (一)

來源:互聯網
上載者:User

標籤:節點   空間   .net   sync   允許   複雜   計劃   string類   shell命令   

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官網。

 

StackExchange.Redis 基本使用 (一) (轉)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.