** 原創(chuàng)文章翰蠢,如有轉(zhuǎn)載請注明來源堤尾! **
.Net下Memcached的引用環(huán)境包很多芋绸,EnyimMemcached包是其中的一個比較出名的媒殉。我們只需要在使用Memcached的項目中通過Nuget安裝EnyimMemcached,Nuget就會幫根據(jù)我們開發(fā)環(huán)境的版本引用相應(yīng)版本的dll及寫入配置文件摔敛,相對我們手動去下載包文件引入适袜,手動配置可謂省時省力,推薦大家使用這種安裝方式舷夺!
EnyimMemcached安裝以后,我們已經(jīng)可以通過相應(yīng)的代碼對Memcached進(jìn)行操作售貌,但我們可以根據(jù)項目實際需要對其進(jìn)行進(jìn)一步封裝给猾,方便我們的實際使用∷炭纾
通常敢伸,對于一些可配置參數(shù)我們都會配置在web.config文件里。下面我們就對Memcached的參數(shù)進(jìn)行配置恒削。
- 打開web.config文件池颈,找到configuration的configSections子節(jié)點,添加如下配置:
<sectionGroup name="enyim.com" \>
<section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" \>
</sectionGroup \>
然后我們添加名為enyim.com
的根節(jié)點钓丰,內(nèi)容如下:
<!--Eniym配置開始-- \>
<enyim.com>
<memcached protocol="Text">
<servers>
<add address="127.0.0.1" port="11211" /> < /servers>
<socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:00:05" deadTimeout="00:02:00" />
</memcached>
< /enyim.com>
< !--Eniym配置結(jié)束-->
整個配置代碼如下圖
接下來躯砰,新建MemCachedHelper.cs
文件,詳細(xì)代碼如下:
using Enyim.Caching;
using Enyim.Caching.Configuration;
using Enyim.Caching.Memcached;
using System;
using System.Net;
#region Version Info
/* ========================================================================
* 【本類功能概述】MemCached緩存處理
*
* 作者:Zeor 時間:2016/7/24 12:03:55
* 文件名:MemCachedHelper
* 版本:V1.0.1
*
* 修改者: 時間:
* 修改說明:
* ========================================================================
*/
#endregion
namespace Zeor.MVCDemo.Common.Cache
{
public class MemCachedHelper
{
private static MemcachedClient MemClient;
static readonly object padlock = new object();
//線程安全的單例模式
public static MemcachedClient getInstance()
{
if (MemClient == null)
{
lock (padlock)
{
if (MemClient == null)
{
MemClientInit();
}
}
}
return MemClient;
}
static void MemClientInit()
{
try
{
MemClient = new MemcachedClient();
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 插入指定值
/// </summary>
/// <param name="key">緩存名稱 </param>
/// <param name="value">緩存值</param>
/// <param name="minutes">過期時間(分鐘)携丁,默認(rèn)一個禮拜</param>
/// <returns>返回是否成功</returns>
public bool Insert(string key, string value,int minutes=10080) {
MemcachedClient mc = getInstance();
var data = mc.Get(key);
DateTime dateTime =DateTime.Now.AddMinutes(1);
if (data == null)
return mc.Store(StoreMode.Add, key, value, dateTime);
else
return mc.Store(StoreMode.Replace, key, value, dateTime);
}
/// <summary>
/// 獲取緩存值
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public object Get(string key)
{
MemcachedClient mc = getInstance();
return mc.Get(key);
}
/// <summary>
/// 刪除指定緩存
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public bool Remove(string key) {
MemcachedClient mc = getInstance();
return mc.Remove(key);
}
/// <summary>
/// 清空緩存服務(wù)器上的緩存
/// </summary>
public void FlushCache() {
MemcachedClient mc = getInstance();
mc.FlushAll();
}
}
}
** 獲取Memcached緩存 **
MemCachedHelper memcacheHelper = new MemCachedHelper();
var obj=memcacheHelper.Get(key));
** 設(shè)置Memcached緩存 **
MemCachedHelper memcacheHelper = new MemCachedHelper();
memcacheHelper.Insert(key,value,minutes));