2018-10-23 15:28:44 [12] ERROR Memcached.ClientLibrary.SockIOPool (null) - Attempting to get SockIO from uninitialized pool!
2018-10-23 15:28:44 [12] ERROR Memcached.ClientLibrary.SockIOPool (null) - Attempting to get SockIO from uninitialized pool!
原因:看错误原因应该是没初始化MemCachedClient 的连接池,但是连接池是初始化过的,
最后发现了问题,SockIOPool.getInstance();也应该添加别名,
正确的是SockIOPool.getInstance(label);
别名:MemcachedHelper MemcachedHelper = new MemcachedHelper(servers,"aaa");
1 public class MemcachedHelper 2 { 3 public MemcachedClient _mClient; 4 /// <summary> 5 /// 初始化。 6 /// </summary> 7 /// <param name="connStr">链接字符串例:127.0.0.1:11211</param> 8 /// <param name="poolName">别名</param> 9 public MemcachedHelper(string[] servers, string poolName) 10 { 11 _mClient = new MemcachedClient(); 12 _mClient.PoolName = poolName; 13 _mClient.EnableCompression = false; 14 //初始化 15 SockIOPool pool = SockIOPool.GetInstance(_mClient.PoolName); 16 //设置服务器列表 17 pool.SetServers(servers); 18 //各服务器之间负载均衡的设置比例 19 pool.SetWeights(new int[] { 1 }); 20 //初始化时创建连接数 21 pool.InitConnections = 3; 22 //最小连接数 23 pool.MinConnections = 3; 24 //最大连接数 25 pool.MaxConnections = 5; 26 //连接的最大空闲时间,下面设置为6个小时(单位ms),超过这个设置时间,连接会被释放掉 27 pool.MaxIdle = 1000 * 60 * 60 * 6; 28 //socket连接的超时时间,下面设置表示不超时(单位ms),即一直保持链接状态 29 pool.SocketConnectTimeout = 0; 30 //通讯的超市时间,下面设置为3秒(单位ms),.Net版本没有实现 31 pool.SocketTimeout = 1000 * 3; 32 //维护线程的间隔激活时间,下面设置为30秒(单位s),设置为0时表示不启用维护线程 33 pool.MaintenanceSleep = 30; 34 //设置SocktIO池的故障标志 35 pool.Failover = true; 36 //是否对TCP/IP通讯使用nalgle算法,.net版本没有实现 37 pool.Nagle = false; 38 //socket单次任务的最大时间(单位ms),超过这个时间socket会被强行中端掉,当前任务失败。 39 pool.MaxBusy = 1000 * 10; 40 //初始化池 41 pool.Initialize(); 42 43 } 44 public void Set<T>(string key, T obj) 45 { 46 _mClient.Set(key, obj); 47 } 48 49 public void Set<T>(string key, T obj, DateTime expireTime) 50 { 51 _mClient.Set(key, obj, expireTime); 52 } 53 54 public void Add<T>(string key, T obj) 55 { 56 _mClient.Add(key, obj); 57 } 58 59 public void Add<T>(string key, T obj, DateTime expireTime) 60 { 61 _mClient.Add(key, obj, expireTime); 62 } 63 64 public void Update<T>(string key, T obj) 65 { 66 _mClient.Replace(key, obj); 67 } 68 69 public void Update<T>(string key, T obj, DateTime expireTime) 70 { 71 _mClient.Replace(key, obj, expireTime); 72 } 73 74 public void Delete(string key) 75 { 76 _mClient.Delete(key); 77 } 78 79 public T Get<T>(string key) 80 { 81 return (T)_mClient.Get(key); 82 } 83 84 public List<T> GetList<T>(string[] keys) 85 { 86 return _mClient.GetMultipleArray(keys).Select(p => (T)p).ToList(); 87 } 88 }
浙公网安备 33010602011771号