Memcache升級版:CouchBase的安裝配置與使用說明


目前C#業界使用得最多的 Cache 系統主要是 Memcached和 Redis。 這兩個 Cache 系統可以說是比較成熟的解決方案,也是很多系統當然的選擇。 

  Memcache的開發團隊開發了Membase,支持多台服務器集群,數據的切片和復制,有效的提高了服務穩定性和數據的安全性,並且支持數據的持久存儲。但代碼的穩定性不夠好。之后,Membase團隊與CouchDB團隊合並,推出二合一的產品: Couchbase。

  Couchbase的最大特點:

  1,完全繼承Memcache,原生支持所有Memcache操作;

  2,繼承了Membase的特性,支持集群和數據持久化;

  3,繼承了CouchDB的文檔性質,支持通過View對數據進行操作。這個View的特性,提供了以往memcache所不具備的便利性,但是同Mongodb相比又很簡單原始,感覺不是一種普遍需求的功能。

  今天,也學習下Couchbase的簡單使用。

首先,從安裝講起:

安裝服務器:

去官網下載對應版本的安裝包http://www.couchbase.com 目前最新版本是4.0

從membase開始,就提倡采用web方式進行管理(執行完安裝文件后,在瀏覽器中http://localhost:8091端口訪問),默認是8091端口。

另外一段信息,是關於端口。11211是memcache訪問端口,8091是管理和操作端口,其他幾個是用於管理和集群通訊的。

打開8091進行初始化設置:

初始化過程很人性化,第一步是選擇物理存儲位置,並且設定新創建還是加入到一個已有的集群中。

如果選擇新創建,需要指定內存使用的數量(注意若在集群中,所有集群的Mem內存必須都大於此值)。下一步中,還可以選擇自動灌入一些測試數據,這樣能直接體驗一些view的效果。

再下一步,是創建缺省Bucket設置,這個很重要:

Bucket的意義,在於將數據進行分隔,比如:任何view就是基於一個bucket的,僅對bucket內的數據進行處理。一個server上 可以有多個Bucket,每個Bucket的存儲類型、內容占用、數據復制數量等,都需要分別指定。從這個意義上看,每個Bucket都相當於一個獨立的 實例。在集群狀態下,我們需要對server進行集群設置,Bucket只側重數據的保管。

創建Bucket,需要指明驅動類型: Memcached顧名思義,純內存,無復制集等功能;Couchbase型是帶有持久存儲,可以有復制集。

關於復制集,可以設置:禁止復制集、復制集數量(如果設為2,數據將在兩個節點上保存,任何一個節點損壞數據仍然存在),是否對索引也進行復制。Flush,是指是否支持清空全部數據的操作。

建議是使用Couchbase類型,設定好內存使用量,其他按默認。關於內存設定,盡量不要將Server上的內存全部分配出去,留一些空閑,對新建Bucket進行測試就很方便。當然,Bucket占用的內存數,在建立后也是可以動態調整的。

后面按照提示進行,設置完管理員密碼,服務就可以使用了。在首頁的管理界面,可以看到運行的概況:

 

在ServerNodes幀中,可以查看服務器集群情況;在View中,可以管理各個Bucket中的View,在DataBuckets中,對Buckets進行管理。比如調整內存占用:

只有一個服務器節點,replica是沒有意義的,我們來搭建第二個服務器節點。安裝過程類似,這里選擇加入集群,填寫IP和密碼:

點擊下一步,經過驗證就可以加入集群了。集群中任何一台服務器,地位是對等的,用瀏覽器連接上去都可以進行管理。

可以看到,新加入的服務器處於 Pending 狀態,意味着數據尚未進行同步。只有數據進行同步之后,這個節點才能提供服務。點擊Rebalance按鈕,進行數據同步。還有進度條顯示。

代碼的實現:

      

 1 static void Main(string[] args)
 2         {
 3             //配置服務器   
 4             CouchbaseClientConfiguration cbcc = new CouchbaseClientConfiguration();
 5             //設置各種超時時間   
 6             cbcc.SocketPool.ReceiveTimeout = new TimeSpan(0, 0, 2);
 7             cbcc.SocketPool.ConnectionTimeout = new TimeSpan(0, 0, 4);
 8             cbcc.SocketPool.DeadTimeout = new TimeSpan(0, 0, 10);
 9             //使用默認的數據庫   
10             cbcc.Urls.Add(new Uri("http://127.0.0.1:8091/pools/default"));
11 
12             //建立一個Client,裝入Client的配置   
13             CouchbaseClient client = new CouchbaseClient(cbcc);
14             //添加一條數據 
15             CasResult<bool> casResult = client.Cas(StoreMode.Add, "Test", "Hello World!");  
//或者 CasResult<bool> casResult=client.Get("Test"); 16 //獲取剛添加的數據 17 Console.WriteLine(client.Get("Test")); 18 Console.WriteLine("完成!"); 19 Console.ReadLine(); 20 }

      或者瀏覽頁面 http://localhost:8091/index.html,也能看到緩存信息

      StoreMode.Add ,StoreMode.Replace 和 StoreMode.Set 的區別 

  Add:表示添加一個新的key;

  Replace:表示更新一個已經存在的key ;

  Set:表示如果key不存在則添加、存在則更新。

  CouchbaseClient 下有添加(Cas)、移除(Remove)和其他方法。

 


免責聲明!

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



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