发文章
发文工具
撰写
网文摘手
文档
视频
思维导图
随笔
相册
原创同步助手
其他工具
图片转文字
文件清理
AI助手
留言交流
分享下自己编写的Memcached通用类。欢迎大家帮忙指点下哈~
使用的是.NET memcached client library 客户端+Memcached Providers
1 using System; 2 using System.Collections; 3 using System.Collections.Generic; 4 using System.Text; 5 using Memcached.ClientLibrary; 6 7 namespace KOC.Common.DataAccess 8 { 9 /// <summary> 10 /// Memcache通用类 11 /// </summary> 12 public abstract class MemberHelper 13 { 14 #region 创建Memcache服务 15 /// <summary> 16 /// 创建Memcache服务 17 /// </summary> 18 /// <param name="serverAddress">服务IP加端口号</param> 19 /// <param name="poolName">Socket连接池名称</param> 20 /// <returns>Memcache客户端代理类</returns> 21 private static MemcachedClient CreateServer(string serverAddress, string poolName) 22 { 23 String[] serverlist = { serverAddress }; //服务ip数组 24 // 初始化memcache服务器池 25 SockIOPool pool = SockIOPool.GetInstance(poolName); 26 if (pool.GetConnection(serverAddress) == null || pool.GetConnection(serverAddress).IsConnected == false)//如果连接池为null,则重新实例化连接池 27 { 28 //设置Memcache池连接点服务器端。 29 pool.SetServers(serverlist); 30 pool.Initialize(); 31 //其他参数根据需要进行配置 32 } 33 34 //创建了一个Memcache客户端的代理类。 35 MemcachedClient mc = new MemcachedClient(); 36 mc.PoolName = poolName; 37 mc.EnableCompression = false;//是否压缩 38 return mc; 39 } 40 #endregion 41 42 #region 缓存是否存在 43 /// <summary> 44 /// 缓存是否存在 45 /// </summary> 46 /// <param name="key">键</param> 47 /// <returns></returns> 48 public static bool CacheIsExists(string serverAddress, string poolName, string key) 49 { 50 MemcachedClient mc = CreateServer(serverAddress, poolName); 51 52 if (mc.KeyExists(key)) 53 { 54 return true; 55 } 56 else 57 { 58 return false; 59 } 60 } 61 #endregion 62 63 #region 添加缓存 64 65 #region 添加缓存(键不存在则添加,键存在则不能添加) 66 /// <summary> 67 /// 添加缓存(键不存在则添加,键存在则不能添加) 68 /// </summary> 69 /// <param name="serverAddress">服务IP地址</param> 70 /// <param name="poolName">连接池名称</param> 71 /// <param name="key">键</param> 72 /// <param name="value">值</param> 73 /// <param name="minutes">过期分钟数</param> 74 /// <returns></returns> 75 public static bool AddCache(string serverAddress, string poolName, string key, string value, int minutes) 76 { 77 MemcachedClient mc = CreateServer(serverAddress, poolName); 78 return mc.Add(key, value, DateTime.Now.AddMinutes(minutes)); 79 } 80 #endregion 81 82 #region 添加缓存(键不存在则添加,键存在则覆盖) 83 /// <summary> 84 /// 添加缓存(键不存在则添加,键存在则覆盖) 85 /// </summary> 86 /// <param name="serverAddress">服务IP地址</param> 87 /// <param name="poolName">连接池名称</param> 88 /// <param name="key">键</param> 89 /// <param name="value">值</param> 90 /// <param name="minutes">过期分钟数</param> 91 /// <returns></returns> 92 public static bool SetCache(string serverAddress, string poolName, string key, string value, int minutes) 93 { 94 MemcachedClient mc = CreateServer(serverAddress, poolName); 95 return mc.Set(key, value, DateTime.Now.AddMinutes(minutes)); 96 } 97 #endregion 98 99 #endregion 100 101 #region 替换缓存 102 103 #region 替换缓存(键存在的才能替换,不存在则不替换) 104 /// <summary> 105 /// 替换缓存(键存在的才能替换,不存在则不替换) 106 /// </summary> 107 /// <param name="serverAddress">服务IP地址</param> 108 /// <param name="poolName">连接池名称</param> 109 /// <param name="key">键</param> 110 /// <param name="value">值</param> 111 /// <param name="minutes">过期分钟数</param> 112 /// <returns></returns> 113 public static bool ReplaceCache(string serverAddress, string poolName, string key, string value, int minutes) 114 { 115 MemcachedClient mc = CreateServer(serverAddress, poolName); 116 return mc.Replace(key, value, DateTime.Now.AddMinutes(minutes)); 117 } 118 #endregion 119 120 #endregion 121 122 #region 获取缓存 123 124 #region 获取单个键对应的缓存 125 /// <summary> 126 /// 获取单个键对应的缓存 127 /// </summary> 128 /// <param name="serverAddress">服务IP地址</param> 129 /// <param name="poolName">连接池名称</param> 130 /// <param name="key">键</param> 131 /// <returns></returns> 132 public static object GetCache(string serverAddress, string poolName, string key) 133 { 134 MemcachedClient mc = CreateServer(serverAddress, poolName); 135 if (mc.KeyExists(key)) 136 { 137 object value = mc.Get(key); 138 return value != null ? value : ""; 139 } 140 else 141 { 142 return ""; 143 } 144 } 145 #endregion 146 147 #region 获取键数组对应的值 148 /// <summary> 149 /// 获取键数组对应的值 150 /// </summary> 151 /// <param name="serverAddress">服务IP地址</param> 152 /// <param name="poolName">连接池名称</param> 153 /// <param name="keys">键列表</param> 154 /// <returns>Hashtable键值对</returns> 155 public static Hashtable GetCacheHt(string serverAddress, string poolName, string[] keys) 156 { 157 MemcachedClient mc = CreateServer(serverAddress, poolName); 158 return mc.GetMultiple(keys); 159 } 160 #endregion 161 162 #region 获取键数组对应的值 163 /// <summary> 164 /// 获取键数组对应的值 165 /// </summary> 166 /// <param name="serverAddress">服务IP地址</param> 167 /// <param name="poolName">连接池名称</param> 168 /// <param name="keys">键列表</param> 169 /// <returns>值的数组(不包含键)</returns> 170 public static object[] GetCacheList(string serverAddress, string poolName, string[] keys) 171 { 172 MemcachedClient mc = CreateServer(serverAddress, poolName); 173 object[] list = mc.GetMultipleArray(keys); 174 ArrayList returnList = new ArrayList(); 175 for (int i = 0; i < list.Length; i++) 176 { 177 if (list[i] != null) 178 { 179 returnList.Add(list[i]); 180 } 181 } 182 return returnList.ToArray(); 183 } 184 #endregion 185 186 #endregion 187 188 #region 删除缓存 189 /// <summary> 190 /// 删除缓存 191 /// </summary> 192 /// <param name="serverAddress">服务IP地址</param> 193 /// <param name="poolName">连接池名称</param> 194 /// <param name="key">键</param> 195 /// <returns></returns> 196 public static bool DelCache(string serverAddress, string poolName, string key) 197 { 198 MemcachedClient mc = CreateServer(serverAddress, poolName); 199 return mc.Delete(key); 200 } 201 #endregion 202 203 #region 清空所有缓存 204 /// <summary> 205 /// 清空所有缓存 206 /// </summary> 207 /// <param name="serverAddress">服务IP地址</param> 208 /// <param name="poolName">连接池名称</param> 209 /// <returns></returns> 210 public static bool FlushAll(string serverAddress, string poolName) 211 { 212 MemcachedClient mc = CreateServer(serverAddress, poolName); 213 return mc.FlushAll(); 214 } 215 #endregion 216 } 217 }
来自: 昵称10504424 > 《C#》
0条评论
发表
请遵守用户 评论公约
缓存-MemCache
缓存-MemCacheMemcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。''c:...
使用Java java_memcached client的陷阱
使用Java java_memcached client的陷阱。这2天,才发现之前我们的某个开发人员使用java_memcached-release_2.0.1.jar是有问题的。在我们的某个模块里,需要2个memcached,分别提供不同的服务。另外一个...
一个完备的数据库连接池类(
/** * 获得一个可用的(空闲的)连接.如果没有可用连接,且已有连接数小于最大连接数 * 限制,则创建并返回新连接 * * @param name 在属性文件中定义的连接池名字 * @return Connection 可用连接...
Discuz!NT中集成Memcached分布式缓存
NT中集成Memcached分布式缓存。/// <summary> /// 添加指定ID的对象(关联指定键值组) /// </summary> /// <par...
Android FTP服务器上传 Android FTP服务器上传文件攻略(代码详解)
Android FTP服务器上传 Android FTP服务器上传文件攻略(代码详解)在开发中,会遇到向FTP服务器上传文件的需求,首先要导入commons-net-3.3.jar 然后利用api进行相关操作,具体功能如下:import org.apac...
memcached 介绍
// 创建一个 memcached 客户端对象protected static MemCachedClient mcc = new MemCachedClient();{ // 指定memcached服务地址String[] servers ={ "server1.mydomain.com:1121","serv...
Java的Memcached客户端
shiro安全框架扩展教程--如何扩展实现我们的缓存机制(第三方容器redis,memcached)
// Referenced classes of package org.apache.shiro.cache: // CacheException public interface Cache { public abstract Object get(Object obj) throws CacheExce...
Memcached笔记
微信扫码,在手机上查看选中内容