1 using Memcached.ClientLibrary;
2 using System;
3 using System.Collections;
4 using System.Collections.Generic;
5 using System.Configuration;
6 using System.Linq;
7 using System.Text;
8
9 namespace Components.Helper
10 {
11 /// 分布式缓存Memcach帮助类
12 public class MemcachHelper
13 {
14 private static MemcachedClient _client;
15 /// 默认缓存时间(默认20分钟)
16 public static int DefaultCacheTime = (!string.IsNullOrEmpty(ConfigurationManager.AppSettings["DefaultCacheTime"]) ? Convert.ToInt32(ConfigurationManager.AppSettings["DefaultCacheTime"]) : 1200000);
17
18 ///
19 /// 是否启用分布式缓存
20 ///
21 public static bool IsEnableScatteredCache = (!string.IsNullOrEmpty(ConfigurationManager.AppSettings["IsEnableScatteredCache"]) ? Convert.ToBoolean(ConfigurationManager.AppSettings["IsEnableScatteredCache"]) : true);
22 static MemcachHelper()
23 {
24 string[] serverlist = (!string.IsNullOrEmpty(ConfigurationManager.AppSettings["Memcached.ServerList"]) ? ConfigurationManager.AppSettings["Memcached.ServerList"].Split(',') : null);
25
26 if (null == serverlist)
27 {
28 serverlist = new string[] { "127.0.0.1:11211" };
29 }
30
31 SockIOPool pool = SockIOPool.GetInstance("First");
32 pool.SetServers(serverlist);
33 pool.Initialize();
34
35 //初始化
36 _client = new MemcachedClient();
37 _client.PoolName = "First";
38 _client.EnableCompression = false;
39 }
40
41 #region Add
42 public static bool Add(string key, object value)
43 {
44 DateTime m_expiryTime = DateTime.Now.AddMilliseconds(DefaultCacheTime);
45 return _client.Add(key, value, m_expiryTime);
46 }
47 public static bool Add(string key, object value, DateTime expiry)
48 {
49 return _client.Add(key, value, expiry);
50 }
51 public static bool Add(string key, object value, int hashCode)
52 {
53 return _client.Add(key, value, hashCode);
54 }
55 public static bool Add(string key, object value, DateTime expiry, int hashCode)
56 {
57 return _client.Add(key, value, expiry, hashCode);
58 }
59 #endregion
60
61 #region Delete
62 /// 删除缓存
63 ///
64 ///
65 public static bool Delete(string key)
66 {
67 return _client.Delete(key);
68 }
69
70 /// 删除缓存
71 ///
72 ///
73 ///
74 public static bool Delete(string key, DateTime expiry)
75 {
76 return _client.Delete(key, expiry);
77 }
78
79 /// 删除缓存
80 ///
81 ///
82 ///
83 ///
84 public static bool Delete(string key, object hashCode, DateTime expiry)
85 {
86 return _client.Delete(key, hashCode, expiry);
87 }
88
89 #endregion
90
91 #region Get
92 /// 获取缓存
93 ///
94 ///
95 public static object Get(string key)
96 {
97 return _client.Get(key);
98 }
99 /// 获取缓存
100 ///
101 ///
102 ///
103 public static object Get(string key, int hashCode)
104 {
105 return _client.Get(key, hashCode);
106 }
107 /// 获取缓存
108 ///
109 ///
110 ///
111 ///
112 public static object Get(string key, object hashCode, bool asString)
113 {
114 return _client.Get(key, hashCode, asString);
115 }
116 #endregion
117
118 #region Replace
119 ///
120 /// 替换更新
121 ///
122 ///
123 ///
124 ///
125 public static bool Replace(string key, object value)
126 {
127 return _client.Replace(key, value);
128 }
129 ///
130 /// 替换更新
131 ///
132 ///
133 ///
134 ///
135 ///
136 public static bool Replace(string key, object value, DateTime expiry)
137 {
138 return _client.Replace(key, value, expiry);
139 }
140 ///
141 /// 替换更新
142 ///
143 ///
144 ///
145 ///
146 ///
147 public static bool Replace(string key, object value, int hashCode)
148 {
149 return _client.Replace(key, value, hashCode);
150 }
151 ///
152 /// 替换更新
153 ///
154 ///
155 ///
156 ///
157 ///
158 ///
159 public static bool Replace(string key, object value, DateTime expiry, int hashCode)
160 {
161 return _client.Replace(key, value, expiry, hashCode);
162 }
163 #endregion
164
165 #region Set
166 public static bool Set(string key, object value)
167 {
168 return _client.Set(key, value);
169 }
170 public static bool Set(string key, object value, DateTime expiry)
171 {
172 return _client.Set(key, value, expiry);
173 }
174 public static bool Set(string key, object value, int hashCode)
175 {
176 return _client.Set(key, value, hashCode);
177 }
178 public static bool Set(string key, object value, DateTime expiry, int hashCode)
179 {
180 return _client.Set(key, value, expiry, hashCode);
181 }
182 #endregion
183
184 #region Stats
185 public static Hashtable Stats()
186 {
187 return _client.Stats();
188 }
189
190 public static Hashtable Stats(ArrayList servers)
191 {
192 return _client.Stats(servers);
193 }
194 #endregion
195
196 /// 判断指定Key的缓存是否存在
197 ///
198 ///
199 public static bool KeyExists(string key)
200 {
201 return _client.KeyExists(key);
202 }
203
204 ///
205 /// 移除缓存,针对空间
206 ///
207 ///
208 public static void RemoveRegionCache(string regionName)
209 {
210
211 }
212 }
213 }