日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

分布式缓存应用(转载的)

發布時間:2023/12/10 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分布式缓存应用(转载的) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

?Asp.Net中使用Couchbase——Memcached緩存入門篇

見http://www.cnblogs.com/aehyok/p/3436721.html

主要講解Couchbase服務端的安裝配置和客戶端的引用調用,然后通過一個零配置的代碼來完成最簡單的代碼實現調用。那么本次課先通過簡單的配置文件進行配置,來完成一個簡單的客戶端調用。如果你還不太熟悉Couchbase的安裝,那么你可以參考上一篇的入門來進行安裝。

配置文件配置調用

第一步:首先上一下配置文件

<?xml version="1.0" encoding="utf-8" ?> <configuration><configSections><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><startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /></startup> </configuration>

  可以看到Servers節點下只添加了一個URI,而且是我的本機。這個地方通常會配置多個URI列表,是客戶端獲取信息的集群配置。默認的Couchbase 服務端安裝是創建一個名為default、沒有密碼的存儲區(bucket),所以這里存儲區密碼(bucketpassword)的屬性為可選。如果你創建了一個已認證的存儲區,你必須在上面的設置中配置那個值。這里暫時就先使用默認的進行吧。

第二步:客戶端命名空間的引用,然后我還是直接建立的控制臺應用程序,通過Nuget來添加Couchbase。

using Couchbase; using Couchbase.Configuration; using Couchbase.Extensions; using Enyim.Caching; using Enyim.Caching.Configuration; using Enyim.Caching.Memcached; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace MemcachedTest {class Program{static void Main(string[] args){var client = new CouchbaseClient();//client.Cas(StoreMode.Set, "Test", "aehyok");var str = client.Get("Test");Console.WriteLine(str);Console.ReadLine();}} }

簡單優化CouchbaseClient

?在上面的調用中也只是一個簡單的示例,但是針對創建客戶端的方式,可能會引發創建連接池的問題,并且建立了一個線程去取得集群的配置。因此,比較好的方式是每個應用程序域和每個存儲區(bucket)只創建一個客戶端實例。為了這個目的,可以通過單例模式來實現。

如果你對單例模式不太了解的話,可以看下我之前的一篇文章,有關單例模式的簡單理解http://www.cnblogs.com/aehyok/archive/2013/05/08/3066127.html。

在此我建立了一個管理類

using Couchbase; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace MemcachedTest {/// <summary>/// 實現單例模式/// </summary>public class CouchbaseManager{private static CouchbaseClient couchbaseClient;private static readonly object syncRoot=new object(); ////程序運行時創建一個靜態的只讀對象private CouchbaseManager(){}public static CouchbaseClient GetInstance(){if (couchbaseClient == null){lock (syncRoot){if (couchbaseClient == null){couchbaseClient = new CouchbaseClient();}}}return couchbaseClient;}} }

然后就可以直接調用了

static void Main(string[] args){var client = CouchbaseManager.GetInstance();client.Cas(StoreMode.Set, "Test", "aehyok");var str = client.Get("Test");Console.WriteLine(str);Console.ReadLine();}

CouchbaseClient CRUD操作

var client = CouchbaseManager.GetInstance();client.Cas(StoreMode.Add, "Test", "aehyok");client.Store(StoreMode.Add,"Test1","aehyok1");

測試這兩個方法都可以進行創建,其中第一個參數StoreMode

Add=1,表示添加一個新的key

Replace=2,表示更新一個已經存在的key

set=3,表示如果key不存在則添加、存在則更新。

如果key已經存在那么Add就會失敗,如果key不存在Replace操作會失敗。

第二個和第三個參數分別是key和value。

返回值是一個bool類型,表示操作是成功還是失敗。

刪除操作比較簡單。

刪除操作使用key去調用Remove方法,類似其他方法,Remove返回一個bool類型的返回值,表示操作是否成功。var result = client.Remove("Test");

CouchbaseClient ?Json擴展方法

  存儲為Json格式的字符串是一個比較簡單直接的操作,但是實際上我們很多時候會有存儲領域對象的需求,更明白的講我們會有很多直接存儲數據的對象的需求。這個.Net 客戶端類庫支持存儲可序列化的對象。當然這些可序列話的對象會作為Joson文本的二進制附件保存。它的影響是附件在查看的時候是沒有索引的。更好的解決方案是在保存前,先把數據序列化成Json字符串;取出數據后,再反序列話Json字符串成對象。

  如果想簡單的讀寫JSON, 在Couchbase.Extensions命名空間下 CouchbaseClientExtensions類提供了兩個方法, StoreJson 和 GetJson。這兩個方法都是依賴于開源類庫: Newtonsoft.Json library, (已經在Couchbase .NET類庫的壓縮包里面)。這兩個只是簡單的對get和store方法的重寫。

using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace MemcachedTest {public class Test{[JsonProperty("F_Name")]public string FirstName { get; set; }[JsonProperty("L_Name")]public string Lastname { get; set; }} }

客戶端的調用

var client = CouchbaseManager.GetInstance();Test test = new Test() { FirstName = "aehyok", Lastname = "Leo" };client.StoreJson(StoreMode.Set, "JsonTest", test);var json = client.GetJson<Test>("JsonTest");

?

?

總結

?這一篇主要是來學習如何在項目中的簡單使用,不過暫時也沒機會在真正項目中進行應用。現在做的小項目中,只是應用靜態Dictionry<string,object>作為緩存的簡單處理。當然其中有很多問題,可以再研究一下,比如如何建立一個存儲庫等等。如果有機會一定要在項目中進行實踐,那樣學習的才會更深入。

轉載于:https://www.cnblogs.com/johnwood/p/3558037.html

總結

以上是生活随笔為你收集整理的分布式缓存应用(转载的)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。