打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Memcached通用类

分享下自己编写的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         #endregion100 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         #endregion119 120         #endregion121 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             else141             {142                 return "";143             }144         }145         #endregion146 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         #endregion161 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         #endregion185 186         #endregion187 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         #endregion202 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         #endregion216     }217 }

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
缓存-MemCache
使用Java java_memcached client的陷阱
一个完备的数据库连接池类(
Discuz!NT中集成Memcached分布式缓存
Android FTP服务器上传 Android FTP服务器上传文件攻略(代码详解)
memcached 介绍
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服