本文不打算抄襲官方或者引用他人對Couchbase的各種描述,僅僅是自己對它的一點理解(錯誤之處,敬請指出),並附上一個入門示例。
ASP.NET Web項目(其他web開發平台也一樣)應用規模小的時候,可以利用.net framework自帶的緩存機制進行緩存,可是,當項目應用規模大了后,再這樣萬年不變的應用下去,恐怕難以取得良好效果。而C#本身是應用級開發語言,其擅長的是業務邏輯開發,而緩存這種與具體業務緊密程度不大的系統,用C#開發,顯然不具有跨平台性,沒有普適性,而且C#對緩存也基本停留在微軟給啥,咱就有啥的階段,並且效率也相對不高。因此,利用C、C++等系統級開發語言進行開發成為合適的選擇。
具體到Couchbase,自己認為應該是Memcached、Membase、CouchDB的融合升級版,可以說是集合眾家之長,目前應該是最先進的Cache系統。這一系統的出現,將極大促進各個web開發平台及自身的發展,真讓人激動。
好了,下面是自己剛剛搗鼓成功的一個示例。
首先下載Couchbase server版本,自己下載的是2.5.1企業版。
安裝成功后,按官方說法,會默認打開本地8091端口進行web管理。
這是內存使用及緩存被調動情況。
這是緩存桶使用情況。
以下為參照資料寫的一個簡易調用示例,先看效果圖:
在用戶姓名文本框中,輸入緩存的用戶名,點擊“Cache User”按鈕后,出現的畫面。
這是緩存成功后,點擊“GetCachedUser”按鈕時出現的畫面。
以下是代碼部分:
調用代碼需要使用Couchbase的客戶端,下載后,在項目中引用:Cachebase.dll 和 Enyim.Caching.dll,之后在web.config中配置以下節點
<configSections> <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> <section name="couchbase" type="Couchbase.Configuration.CouchbaseClientSection, Couchbase"/> </configSections> <couchbase> <servers bucket="default" bucketPassword=""> <add uri="http://127.0.0.1:8091/pools"/> </servers> </couchbase>
前台代碼(html)部分:
<div id="body" style="text-indent: 10px"> 姓名:<input type="text" id="cacheuser" /> <input type="button" value="Cache User" onclick="cacheUser();" /> <input type="button" value="GetCachedUser" onclick="getCachedUser();" /> </div> <script type="text/javascript"> function cacheUser() { $.getServerJson('api/HomeAPI/GetCacheUser', { userName: $("#cacheuser").val() }, function (result) { alert(result); }); } function getCachedUser() { $.getServerJson('api/HomeAPI/GetCachedUser', { userName: $("#cacheuser").val() }, function (result) { alert(result); }); } </script>
C#代碼部分如下:
public string GetCacheUser(string userName) { var client = CouchbaseManager.Instance; client.Remove(userName); bool result = client.Store(StoreMode.Add, userName, "我是:" + userName + ",找我有事嗎?", LoginTimeSpan); return result == true ? "緩存成功。" : "緩存失敗!"; } public string GetCachedUser(string userName) { var client = CouchbaseManager.Instance; object ob = client.Get(userName); return ob == null ? "抱歉,沒有找到此人!" : ob.ToString(); }
Couchbase調用非常的簡單明了,沒有過多的配置,擴展也極其方便。整體感覺Couchbase是一個非常棒的Cache系統,期待在以后的開發中大規模應用它!