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     }

 

posted on 2018-10-23 15:46  高达  阅读(202)  评论(0)    收藏  举报

导航