小雨点点789 发表于 2015-9-1 11:33:03

memcached 配置及使用

  1、配置


    <!--memcached 配置-->
    <add key="MemcachedServerlist" value="127.0.0.1:11211"/>
    <add key="InitConnections" value="3"/>
    <add key="MinConnections" value="3"/>
    <add key="MaxConnections" value="5"/>
    <add key="SocketConnectTimeout" value="1000"/>
    <add key="SocketTimeout" value="3000"/>
    <add key="MaintenanceSleep" value="30"/>
    <add key="Failover" value="true"/>
    <add key="Nagle" value="false"/>
    <add key="CacheTimeout" value="10"/>  
  2、memcached 管理类
  


/*
* Memcache管理类
* author:domo
* date:2012-04-17
*/
#region 引用
using System;
using System.Configuration;
using Memcached.ClientLibrary;
#endregion
namespace bases.cache
{
    /// <summary>
    /// Memcache管理类
    /// </summary>
    public class MemcacheManager
    {
      /// <summary>
      /// 定义Memcache客户端
      /// </summary>
      internal MemcachedClient Mc = new MemcachedClient { EnableCompression = false };
      /// <summary>
      /// 构造 初始化参数
      /// </summary>
      public MemcacheManager()
      {
            var serverlist = ConfigurationManager.AppSettings["MemcachedServerlist"].Split(',');
            var initConnections = ConfigurationManager.AppSettings["InitConnections"];
            var minConnections = ConfigurationManager.AppSettings["MinConnections"];
            var maxConnections = ConfigurationManager.AppSettings["MaxConnections"];
            var socketConnectTimeout = ConfigurationManager.AppSettings["SocketConnectTimeout"];
            var socketTimeout = ConfigurationManager.AppSettings["SocketTimeout"];
            var maintenanceSleep = ConfigurationManager.AppSettings["MaintenanceSleep"];
            var failover = ConfigurationManager.AppSettings["Failover"];
            var nagle = ConfigurationManager.AppSettings["Nagle"];
            var pool = SockIOPool.GetInstance();
            pool.SetServers(serverlist);
            pool.InitConnections = Convert.ToInt32(initConnections);
            pool.MinConnections = Convert.ToInt32(minConnections);
            pool.MaxConnections = Convert.ToInt32(maxConnections);
            pool.SocketConnectTimeout = Convert.ToInt32(socketConnectTimeout);
            pool.SocketTimeout = Convert.ToInt32(socketTimeout);
            pool.MaintenanceSleep = Convert.ToInt64(maintenanceSleep);
            pool.Failover = Convert.ToBoolean(failover);
            pool.Nagle = Convert.ToBoolean(nagle);
            pool.Initialize();
      }
      /// <summary>
      /// 添加cache
      /// </summary>
      /// <param name="key"></param>
      /// <param name="value"></param>
      public void Add(string key, object value)
      {
            var cacheTimeout = ConfigurationManager.AppSettings["CacheTimeout"];
            if (!Mc.KeyExists(key))
                Mc.Set(key, value, DateTime.Now.AddMinutes(Convert.ToDouble(cacheTimeout)));
      }
      /// <summary>
      /// 移除某个cache
      /// </summary>
      /// <param name="key"></param>
      public void Delete(string key)
      {
            Mc.Delete(key);
      }
      /// <summary>
      /// 获取某个cache的值
      /// </summary>
      /// <param name="key"></param>
      /// <returns></returns>
      public object GetValue(string key)
      {
            return Mc.KeyExists(key) ? Mc.Get(key) : null;
      }
      /// <summary>
      /// 清空所有所有cache
      /// </summary>
      public void Flush()
      {
            Mc.FlushAll();
      }
      /// <summary>
      /// 关闭sockets
      /// </summary>
      public void Shutdown()
      {
            SockIOPool.GetInstance().Shutdown();
      }
    }
}  3、使用
  


                MemcacheManager memcacheManager = new MemcacheManager();
                if (memcacheManager.GetValue("test") == null)
                  memcacheManager.Add("test","my value");
页: [1]
查看完整版本: memcached 配置及使用