本文说明:memcached分布式缓存的负载均衡配置比例,数据压缩,socket的详细配置等,以及在.net中的常用方法

首先下载客户端的3个dll,ICSharpCode.SharpZipLib.dll,log4net.dll,Memcached.ClientLibrary.dll
然后新建一个简单控制台应用程序如下:
  public class MemcacheHelper
    {
        //实例化Client
        public MemcachedClient MClient;
        public MemcacheHelper(string poolName)
        {
            string[] MemcacheServiceList = { "127.0.0.1:11211", "192.168.100.103:11211" };
            //初始化连接池
            SockIOPool pool = SockIOPool.GetInstance(poolName);
            //设置服务器列表
            pool.SetServers(MemcacheServiceList);
            //各服务器之间负载均衡的设置比例
            pool.SetWeights(new int[] { 10, 1 });
            //初始化时创建连接数
            pool.InitConnections = 3;
            //最小连接数
            pool.MinConnections = 3;
            //最大连接数
            pool.MaxConnections = 5;
            //连接的最大空闲时间,下面设置为6个小时(单位ms),超过这个设置时间,连接会被释放掉
            pool.MaxIdle = 1000 * 60 * 60 * 6;
            //socket连接的超时时间,下面设置表示不超时(单位ms),即一直保持链接状态
            pool.SocketConnectTimeout = 0;
            //通讯的超时时间,下面设置为3秒(单位ms),.Net版本没有实现
            pool.SocketTimeout = 1000 * 3;
            //维护线程的间隔激活时间,下面设置为30秒(单位s),设置为0时表示不启用维护线程
            pool.MaintenanceSleep = 30;
            //设置SocktIO池的故障标志
            pool.Failover = true;
            //是否对TCP/IP通讯使用nalgle算法,.net版本没有实现
            pool.Nagle = false;
            //socket单次任务的最大时间(单位ms),超过这个时间socket会被强行中端掉,当前任务失败。
            pool.MaxBusy = 1000 * 10;
            // 初始化一些值并与MemcachedServer段建立连接
            pool.Initialize();
            MClient= new MemcachedClient();
            //是否启用压缩数据:如果启用了压缩,数据压缩长于门槛的数据将被储存在压缩的形式
            MClient.EnableCompression = false;
            //压缩设置,超过指定大小的都压缩 
            //MClient.CompressionThreshold = 1024 * 1024;   
            //指定客户端访问的SockIO池
            MClient.PoolName = poolName;
        }
    }
    public class Program
    {
        public static void Main(string[] args)
        {       
            //参数设置
 string SockIOPoolName = "demo"; 
            MemcacheHelper helper = new MemcacheHelper(SockIOPoolName);
            //存入key为demoKey,value为Hello World的一个缓存,并设置过期时间
            helper.MClient.Add("demoKey", "Hello World", DateTime.Now.AddSeconds(10));         
            //读出key为demoKey的缓存值
            var demovalue = helper.MClient.Get("demoKey");
            //输出
            Console.WriteLine("缓存的值:" + demovalue);
            Console.ReadKey();           
        }
    }
View Code

一、memcached分布式缓存的设置与应用

相关文章: