在VS中安裝Memcached,直接在NuGet下搜索Memcached,選擇第一個進行安裝:
服務端資源下載地址:https://pan.baidu.com/s/1gf3tupl
接下來開始寫程序,老規矩,直接上代碼:
public class Memcached : ICache { private static readonly MemcachedClient CacheClient = new MemcachedClient(); /// <summary> /// 獲取緩存 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="cacheKey"></param> /// <returns></returns> public T GetCache<T>(string cacheKey) where T : class { try { return (T)CacheClient.Get(cacheKey); } catch { return default(T); } } /// <summary> /// 寫入緩存,過期時間默認10分鍾 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="value"></param> /// <param name="cacheKey"></param> public void WriteCache<T>(T value, string cacheKey) where T : class { //CacheClient.Store(StoreMode.Set, cacheKey, value); CacheClient.Store(Exists(cacheKey) ? StoreMode.Set : StoreMode.Replace, cacheKey, value, DateTimeHelper.Now.AddMinutes(10)); } /// <summary> /// 寫入緩存 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="value"></param> /// <param name="cacheKey"></param> /// <param name="expireTime"></param> public void WriteCache<T>(T value, string cacheKey, DateTime expireTime) where T : class { //CacheClient.Store(StoreMode.Set, cacheKey, value, expireTime); CacheClient.Store(Exists(cacheKey) ? StoreMode.Set : StoreMode.Replace, cacheKey, value, expireTime); } /// <summary> /// 移除緩存 /// </summary> /// <param name="cacheKey"></param> public void RemoveCache(string cacheKey) { CacheClient.Remove(cacheKey); } /// <summary> /// 移除所有緩存 /// </summary> public void RemoveCache() { CacheClient.FlushAll(); } /// <summary> /// 是否存在 /// </summary> /// <param name="key"></param> /// <returns></returns> private static bool Exists(string key) { return CacheClient.Get(key) != null; } }
接口類:
public interface ICache { /// <summary> /// 讀取緩存 /// </summary> /// <param name="cacheKey">鍵</param> /// <returns></returns> T GetCache<T>(string cacheKey) where T : class; /// <summary> /// 寫入緩存 /// </summary> /// <param name="value">對象數據</param> /// <param name="cacheKey">鍵</param> void WriteCache<T>(T value, string cacheKey) where T : class; /// <summary> /// 寫入緩存 /// </summary> /// <param name="value">對象數據</param> /// <param name="cacheKey">鍵</param> /// <param name="expireTime">到期時間</param> void WriteCache<T>(T value, string cacheKey, DateTime expireTime) where T : class; /// <summary> /// 移除指定數據緩存 /// </summary> /// <param name="cacheKey">鍵</param> void RemoveCache(string cacheKey); /// <summary> /// 移除全部緩存 /// </summary> void RemoveCache(); }
配置文件:
<configSections> <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,Microsoft.Practices.Unity.Configuration" /> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> <sectionGroup name="enyim.com"> <section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" /> </sectionGroup> </configSections> <enyim.com> <memcached> <servers> <add address="192.168.1.12" port="11211" /> </servers> <socketPool minPoolSize="10" maxPoolSize="1000" connectionTimeout="00:00:10" deadTimeout="00:02:00" /> </memcached> </enyim.com>