本文说明: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(); } }
一、memcached分布式缓存的设置与应用