C#操作Memcached幫助類


在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>

  


免責聲明!

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



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