C# Memcached 缓存
之前做的功能,程序可能有不足之处,但还是要记录下
ICacheStrategy.cs文件
- public interface ICacheStrategy
- {
- /// <summary>
- /// 添加数据到缓存
- /// </summary>
- /// <param name="objId">缓存名称</param>
- /// <param name="o">缓存内容</param>
- /// <param name="second">缓存时间(秒)</param>
- void Add(string objId, object o, int second);
- /// <summary>
- /// 添加数据到缓存 (依赖其它缓存)
- /// </summary>
- /// <param name="objId">缓存名称</param>
- /// <param name="o">缓存内容</param>
- /// <param name="second">缓存时间(秒)</param>
- /// <param name="dependKey">依赖缓存名称数组</param>
- void AddCacheDepend(string objId, object o, int second, string[] dependKey);
- /// <summary>
- /// 添加数据到缓存 (依赖文件)
- /// </summary>
- /// <param name="objId">缓存名称</param>
- /// <param name="o">缓存内容</param>
- /// <param name="second">缓存时间(秒)</param>
- /// <param name="files">依赖缓存名称文件名数组</param>
- void AddFileDepend(string objId, object o, int second, string[] files);
- /// <summary>
- /// 删除指定缓存
- /// </summary>
- /// <param name="objId"></param>
- void RemoveCache(string objId);
- /// <summary>
- /// 删除所有缓存
- /// </summary>
- void RemoveCacheAll();
- /// <summary>
- /// 删除匹配到的缓存
- /// </summary>
- /// <param name="pattern"></param>
- /// <returns></returns>
- void RemoveCacheRegex(string pattern);
- /// <summary>
- /// 获取所有缓存键
- /// </summary>
- /// <returns></returns>
- IList<string> GetCacheKeys();
- /// <summary>
- /// 搜索 匹配到的缓存
- /// </summary>
- /// <param name="pattern"></param>
- /// <returns></returns>
- IList<string> SearchCacheRegex(string pattern);
- /// <summary>
- /// 获得缓存数据
- /// </summary>
- /// <param name="objId"></param>
- /// <returns></returns>
- object GetCacheData(string objId);
- /// <summary>
- /// 判断此缓存是否有效
- /// </summary>
- /// <param name="objID"></param>
- /// <returns></returns>
- bool HasCache(string objID);
- }
MemcachedStrategy.cs文件
- public class MemcachedStrategy : ICacheStrategy
- {
- #region ICacheStrategy 成员
- /// <summary>
- /// 添加数据到缓存
- /// </summary>
- /// <param name="objId">缓存名称</param>
- /// <param name="o">缓存内容</param>
- /// <param name="second">缓存时间(秒)</param>
- public void Add(string objId, object o, int second)
- {
- if (second > )
- {
- MemcachedManager.CacheClient.Set(objId, o, DateTime.Now.AddSeconds(second));
- }
- else
- {
- MemcachedManager.CacheClient.Set(objId, o);
- }
- }
- #region 缓存依赖没有用到memcached
- /// <summary>
- /// 添加数据到缓存 (依赖其它缓存)
- /// </summary>
- /// <param name="objId">缓存名称</param>
- /// <param name="o">缓存内容</param>
- /// <param name="second">缓存时间(秒)</param>
- /// <param name="dependKey">依赖缓存名称数组</param>
- public void AddCacheDepend(string objId, object o, int second, string[] dependKey)
- {
- CacheDependency dependencies = new CacheDependency(null, dependKey, DateTime.Now);
- HttpRuntime.Cache.Insert(objId, o, dependencies, DateTime.Now.AddSeconds((double)second), Cache.NoSlidingExpiration, CacheItemPriority.Default, null);
- }
- /// <summary>
- /// 添加数据到缓存 (依赖文件)
- /// </summary>
- /// <param name="objId">缓存名称</param>
- /// <param name="o">缓存内容</param>
- /// <param name="second">缓存时间(秒)</param>
- /// <param name="files">依赖缓存名称文件名数组</param>
- public void AddFileDepend(string objId, object o, int second, string[] files)
- {
- CacheDependency dependencies = new CacheDependency(files, DateTime.Now);
- HttpRuntime.Cache.Insert(objId, o, dependencies, DateTime.Now.AddSeconds((double)second), Cache.NoSlidingExpiration, CacheItemPriority.Default, null);
- }
- #endregion
- /// <summary>
- /// 删除指定缓存
- /// </summary>
- /// <param name="objId"></param>
- public void RemoveCache(string objId)
- {
- if (MemcachedManager.CacheClient.KeyExists(objId))
- MemcachedManager.CacheClient.Delete(objId);
- }
- /// <summary>
- /// 删除所有缓存
- /// </summary>
- public void RemoveCacheAll()
- {
- MemcachedManager.CacheClient.FlushAll();
- }
- /// <summary>
- /// 删除匹配到的缓存
- /// </summary>
- /// <param name="pattern"></param>
- public void RemoveCacheRegex(string pattern)
- {
- IList<string> list = SearchCacheRegex(pattern);
- foreach (var item in list)
- {
- MemcachedManager.CacheClient.Delete(item);
- }
- }
- /// <summary>
- /// 获取所有缓存键
- /// </summary>
- /// <returns></returns>
- public IList<string> GetCacheKeys()
- {
- return MemcachedManager.GetAllKeys();
- }
- /// <summary>
- /// 搜索 匹配到的缓存
- /// </summary>
- /// <param name="pattern"></param>
- /// <returns></returns>
- public IList<string> SearchCacheRegex(string pattern)
- {
- List<string> l = new List<string>();
- IList<string> cacheKeys = MemcachedManager.GetAllKeys();
- foreach (var item in cacheKeys)
- {
- if (Regex.IsMatch(item, pattern))
- {
- l.Add(item);
- }
- }
- return l.AsReadOnly();
- }
- /// <summary>
- /// 获得缓存数据
- /// </summary>
- /// <param name="objId"></param>
- /// <returns></returns>
- public object GetCacheData(string objId)
- {
- return MemcachedManager.CacheClient.Get(objId);
- }
- /// <summary>
- /// 判断此缓存是否有效
- /// </summary>
- /// <param name="objID"></param>
- /// <returns></returns>
- public bool HasCache(string objID)
- {
- return MemcachedManager.CacheClient.KeyExists(objID);
- }
- #endregion
- }
C# Memcached 缓存的更多相关文章
- 从零开始学 Java - Spring 集成 Memcached 缓存配置(二)
Memcached 客户端选择 上一篇文章 从零开始学 Java - Spring 集成 Memcached 缓存配置(一)中我们讲到这篇要谈客户端的选择,在 Java 中一般常用的有三个: Memc ...
- .NET跨平台之旅:基于.NET Core改写EnyimMemcached,实现Linux上访问memcached缓存
注:支持 .NET Core 的 memcached 客户端 EnyimMemcachedCore 的 NuGet 包下载地址:https://www.nuget.org/packages/Enyim ...
- redis和memcached缓存
memcached memcache开源的,高性能,高并发分布式内存缓存系统,天生支持集群 memcached下载地址: http://memcached.org/downloads python实现 ...
- 应对Memcached缓存失效,导致高并发查询DB的四种思路(l转)
当Memcached缓存失效时,容易出现高并发的查询DB,导致DB压力骤然上升. 这篇blog主要是探讨如何在缓存将要失效时,及时地更新缓存,而不是如何在缓存失效之后,如何防止高并发的DB查询. 解决 ...
- memcached 缓存服务器
Memcached 缓存服务器 Memcached 是高性能的分布式内存缓存服务器. 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态web应用的速度.提高可扩展性. 主要特点 ...
- Memcached缓存瓶颈分析
Memcached缓存瓶颈分析 获取Memcached的统计信息 Shell: # echo "stats" | nc 127.0.0.1 11211 PHP: $mc = new ...
- 通过spring.net中的spring.caching CacheResult实现memcached缓存
通过spring.net中的spring.caching CacheResult实现memcached缓存1.SpringMemcachedCache.cs2.APP.config3.Program. ...
- Windows系统下Memcached缓存系列二:CouchbaseClient(c#客户端)的详细试用,单例模式
在上一篇文章里面 ( Windows系统下Memcached缓存系列一:Couchbase(服务器端)和CouchbaseClient(c#客户端)的安装教程 ),我们介绍了服务器端的安装和客户端的安 ...
- memcached缓存雪崩现象及解决办法
1)什么是缓存雪崩?场景:一个访问很大的文章(论坛之类)的网站,使用memcached缓存用户查询过的文章.设置的缓存过期时间为6小时,所以没过6小时,缓存就会失效并重建一遍 问题:过六小时时,一部分 ...
- 受教了,memcache比较全面点的介绍,受益匪浅,适用memcached的业务场景有哪些?memcached的cache机制是怎样的?在设计应用时,可以通过Memcached缓存那些内容?
基本问题 1.memcached的基本设置 1)启动Memcache的服务器端 # /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 ...
随机推荐
- C的指针疑惑:C和指针13(高级指针话题)上
int *f(); f为一个函数,返回值类型是一个指向整形的指针. int (*f)(); 两对括号,第二对括号是函数调用操作符,但第一对括号只起到聚组的作用. f为一个函数指针,它所指向的函数返回一 ...
- 设备驱动与控制器 I/O
控制器是对硬件发起控制命令,负责给系统提供接口,想要正常使用该硬件功能系统中必须安装相应驱动 I/O设备 cpu和存储器并不是操作系统唯一需要管理的资源,I/O设备也是非常重要的一环. I/O设备一般 ...
- 编译安装MariaDB-10.0.21
一.源码编译安装gcc-5.1.0 1.下载gcc源码包 Download (HTTP): http://ftpmirror.gnu.org/gcc/gcc-5.2.0/gcc-5.2.0.tar.b ...
- PL/SQL Developer 登录 Oracle 12c和Win10下安装Oracle 11g
安装了Oracle 12c 后使用PL/SQL Developer怎么也不能连接到Oracle 12c.网上找一下,按照fcflying所说的操作成功了,所以做个笔记: 1)安装Oracle 12c ...
- 记一次服务器迁移 TFS客户端ip更换
服务器迁移,TFS服务端IP由原10.58.8.231更换至10.58.1.230 TFS客户端更换ip操作比较复杂,请谨慎操作,避免脱库的风险!!! 打开注册表,运行->regedit 找到H ...
- log4j相关配置
1.概述 log4j是Apache提供的一个日志实现,可以用于我们项目中的日志记录,有log4j1和log4j2两个版本,本文使用log4j2这个版本.SLF4J(Simple log ...
- 从u-boot的编译结果中提取include目录
ac@DESKTOP-BJ1MJGM:~/u-boot-2019.01/spl$ arm-linux-gnueabihf-objdump -g u-boot-spl | awk '/The Direc ...
- hdu6121 Build a tree
地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=6121 题面: Build a tree Time Limit: 2000/1000 MS (J ...
- JavaScript 操作JSON总结
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...
- 不允许有匹配 "[xX][mM][lL]" 的处理指令目标
八月 , :: 上午 org.apache.tomcat.util.digester.SetPropertiesRule begin 警告: [SetPropertiesRule]{Server/Se ...