之前做的功能,程序可能有不足之处,但还是要记录下

ICacheStrategy.cs文件

  1. public interface ICacheStrategy
  2. {
  3. /// <summary>
  4. /// 添加数据到缓存
  5. /// </summary>
  6. /// <param name="objId">缓存名称</param>
  7. /// <param name="o">缓存内容</param>
  8. /// <param name="second">缓存时间(秒)</param>
  9. void Add(string objId, object o, int second);
  10.  
  11. /// <summary>
  12. /// 添加数据到缓存 (依赖其它缓存)
  13. /// </summary>
  14. /// <param name="objId">缓存名称</param>
  15. /// <param name="o">缓存内容</param>
  16. /// <param name="second">缓存时间(秒)</param>
  17. /// <param name="dependKey">依赖缓存名称数组</param>
  18. void AddCacheDepend(string objId, object o, int second, string[] dependKey);
  19.  
  20. /// <summary>
  21. /// 添加数据到缓存 (依赖文件)
  22. /// </summary>
  23. /// <param name="objId">缓存名称</param>
  24. /// <param name="o">缓存内容</param>
  25. /// <param name="second">缓存时间(秒)</param>
  26. /// <param name="files">依赖缓存名称文件名数组</param>
  27. void AddFileDepend(string objId, object o, int second, string[] files);
  28.  
  29. /// <summary>
  30. /// 删除指定缓存
  31. /// </summary>
  32. /// <param name="objId"></param>
  33. void RemoveCache(string objId);
  34.  
  35. /// <summary>
  36. /// 删除所有缓存
  37. /// </summary>
  38. void RemoveCacheAll();
  39.  
  40. /// <summary>
  41. /// 删除匹配到的缓存
  42. /// </summary>
  43. /// <param name="pattern"></param>
  44. /// <returns></returns>
  45. void RemoveCacheRegex(string pattern);
  46.  
  47. /// <summary>
  48. /// 获取所有缓存键
  49. /// </summary>
  50. /// <returns></returns>
  51. IList<string> GetCacheKeys();
  52.  
  53. /// <summary>
  54. /// 搜索 匹配到的缓存
  55. /// </summary>
  56. /// <param name="pattern"></param>
  57. /// <returns></returns>
  58. IList<string> SearchCacheRegex(string pattern);
  59.  
  60. /// <summary>
  61. /// 获得缓存数据
  62. /// </summary>
  63. /// <param name="objId"></param>
  64. /// <returns></returns>
  65. object GetCacheData(string objId);
  66.  
  67. /// <summary>
  68. /// 判断此缓存是否有效
  69. /// </summary>
  70. /// <param name="objID"></param>
  71. /// <returns></returns>
  72. bool HasCache(string objID);
  73. }

MemcachedStrategy.cs文件

  1. public class MemcachedStrategy : ICacheStrategy
  2. {
  3. #region ICacheStrategy 成员
  4.  
  5. /// <summary>
  6. /// 添加数据到缓存
  7. /// </summary>
  8. /// <param name="objId">缓存名称</param>
  9. /// <param name="o">缓存内容</param>
  10. /// <param name="second">缓存时间(秒)</param>
  11. public void Add(string objId, object o, int second)
  12. {
  13. if (second > )
  14. {
  15. MemcachedManager.CacheClient.Set(objId, o, DateTime.Now.AddSeconds(second));
  16. }
  17. else
  18. {
  19. MemcachedManager.CacheClient.Set(objId, o);
  20. }
  21. }
  22.  
  23. #region 缓存依赖没有用到memcached
  24. /// <summary>
  25. /// 添加数据到缓存 (依赖其它缓存)
  26. /// </summary>
  27. /// <param name="objId">缓存名称</param>
  28. /// <param name="o">缓存内容</param>
  29. /// <param name="second">缓存时间(秒)</param>
  30. /// <param name="dependKey">依赖缓存名称数组</param>
  31. public void AddCacheDepend(string objId, object o, int second, string[] dependKey)
  32. {
  33. CacheDependency dependencies = new CacheDependency(null, dependKey, DateTime.Now);
  34. HttpRuntime.Cache.Insert(objId, o, dependencies, DateTime.Now.AddSeconds((double)second), Cache.NoSlidingExpiration, CacheItemPriority.Default, null);
  35. }
  36.  
  37. /// <summary>
  38. /// 添加数据到缓存 (依赖文件)
  39. /// </summary>
  40. /// <param name="objId">缓存名称</param>
  41. /// <param name="o">缓存内容</param>
  42. /// <param name="second">缓存时间(秒)</param>
  43. /// <param name="files">依赖缓存名称文件名数组</param>
  44. public void AddFileDepend(string objId, object o, int second, string[] files)
  45. {
  46. CacheDependency dependencies = new CacheDependency(files, DateTime.Now);
  47. HttpRuntime.Cache.Insert(objId, o, dependencies, DateTime.Now.AddSeconds((double)second), Cache.NoSlidingExpiration, CacheItemPriority.Default, null);
  48. }
  49. #endregion
  50.  
  51. /// <summary>
  52. /// 删除指定缓存
  53. /// </summary>
  54. /// <param name="objId"></param>
  55. public void RemoveCache(string objId)
  56. {
  57. if (MemcachedManager.CacheClient.KeyExists(objId))
  58. MemcachedManager.CacheClient.Delete(objId);
  59. }
  60.  
  61. /// <summary>
  62. /// 删除所有缓存
  63. /// </summary>
  64. public void RemoveCacheAll()
  65. {
  66. MemcachedManager.CacheClient.FlushAll();
  67. }
  68.  
  69. /// <summary>
  70. /// 删除匹配到的缓存
  71. /// </summary>
  72. /// <param name="pattern"></param>
  73. public void RemoveCacheRegex(string pattern)
  74. {
  75. IList<string> list = SearchCacheRegex(pattern);
  76. foreach (var item in list)
  77. {
  78. MemcachedManager.CacheClient.Delete(item);
  79. }
  80. }
  81.  
  82. /// <summary>
  83. /// 获取所有缓存键
  84. /// </summary>
  85. /// <returns></returns>
  86. public IList<string> GetCacheKeys()
  87. {
  88. return MemcachedManager.GetAllKeys();
  89. }
  90.  
  91. /// <summary>
  92. /// 搜索 匹配到的缓存
  93. /// </summary>
  94. /// <param name="pattern"></param>
  95. /// <returns></returns>
  96. public IList<string> SearchCacheRegex(string pattern)
  97. {
  98. List<string> l = new List<string>();
  99. IList<string> cacheKeys = MemcachedManager.GetAllKeys();
  100. foreach (var item in cacheKeys)
  101. {
  102. if (Regex.IsMatch(item, pattern))
  103. {
  104. l.Add(item);
  105. }
  106. }
  107. return l.AsReadOnly();
  108. }
  109.  
  110. /// <summary>
  111. /// 获得缓存数据
  112. /// </summary>
  113. /// <param name="objId"></param>
  114. /// <returns></returns>
  115. public object GetCacheData(string objId)
  116. {
  117. return MemcachedManager.CacheClient.Get(objId);
  118. }
  119.  
  120. /// <summary>
  121. /// 判断此缓存是否有效
  122. /// </summary>
  123. /// <param name="objID"></param>
  124. /// <returns></returns>
  125. public bool HasCache(string objID)
  126. {
  127. return MemcachedManager.CacheClient.KeyExists(objID);
  128. }
  129. #endregion
  130. }

C# Memcached 缓存的更多相关文章

  1. 从零开始学 Java - Spring 集成 Memcached 缓存配置(二)

    Memcached 客户端选择 上一篇文章 从零开始学 Java - Spring 集成 Memcached 缓存配置(一)中我们讲到这篇要谈客户端的选择,在 Java 中一般常用的有三个: Memc ...

  2. .NET跨平台之旅:基于.NET Core改写EnyimMemcached,实现Linux上访问memcached缓存

    注:支持 .NET Core 的 memcached 客户端 EnyimMemcachedCore 的 NuGet 包下载地址:https://www.nuget.org/packages/Enyim ...

  3. redis和memcached缓存

    memcached memcache开源的,高性能,高并发分布式内存缓存系统,天生支持集群 memcached下载地址: http://memcached.org/downloads python实现 ...

  4. 应对Memcached缓存失效,导致高并发查询DB的四种思路(l转)

    当Memcached缓存失效时,容易出现高并发的查询DB,导致DB压力骤然上升. 这篇blog主要是探讨如何在缓存将要失效时,及时地更新缓存,而不是如何在缓存失效之后,如何防止高并发的DB查询. 解决 ...

  5. memcached 缓存服务器

    Memcached 缓存服务器 Memcached 是高性能的分布式内存缓存服务器. 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态web应用的速度.提高可扩展性. 主要特点 ...

  6. Memcached缓存瓶颈分析

    Memcached缓存瓶颈分析 获取Memcached的统计信息 Shell: # echo "stats" | nc 127.0.0.1 11211 PHP: $mc = new ...

  7. 通过spring.net中的spring.caching CacheResult实现memcached缓存

    通过spring.net中的spring.caching CacheResult实现memcached缓存1.SpringMemcachedCache.cs2.APP.config3.Program. ...

  8. Windows系统下Memcached缓存系列二:CouchbaseClient(c#客户端)的详细试用,单例模式

    在上一篇文章里面 ( Windows系统下Memcached缓存系列一:Couchbase(服务器端)和CouchbaseClient(c#客户端)的安装教程 ),我们介绍了服务器端的安装和客户端的安 ...

  9. memcached缓存雪崩现象及解决办法

    1)什么是缓存雪崩?场景:一个访问很大的文章(论坛之类)的网站,使用memcached缓存用户查询过的文章.设置的缓存过期时间为6小时,所以没过6小时,缓存就会失效并重建一遍 问题:过六小时时,一部分 ...

  10. 受教了,memcache比较全面点的介绍,受益匪浅,适用memcached的业务场景有哪些?memcached的cache机制是怎样的?在设计应用时,可以通过Memcached缓存那些内容?

    基本问题 1.memcached的基本设置 1)启动Memcache的服务器端 # /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 ...

随机推荐

  1. C的指针疑惑:C和指针13(高级指针话题)上

    int *f(); f为一个函数,返回值类型是一个指向整形的指针. int (*f)(); 两对括号,第二对括号是函数调用操作符,但第一对括号只起到聚组的作用. f为一个函数指针,它所指向的函数返回一 ...

  2. 设备驱动与控制器 I/O

    控制器是对硬件发起控制命令,负责给系统提供接口,想要正常使用该硬件功能系统中必须安装相应驱动 I/O设备 cpu和存储器并不是操作系统唯一需要管理的资源,I/O设备也是非常重要的一环. I/O设备一般 ...

  3. 编译安装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 ...

  4. PL/SQL Developer 登录 Oracle 12c和Win10下安装Oracle 11g

    安装了Oracle 12c 后使用PL/SQL Developer怎么也不能连接到Oracle 12c.网上找一下,按照fcflying所说的操作成功了,所以做个笔记: 1)安装Oracle 12c ...

  5. 记一次服务器迁移 TFS客户端ip更换

    服务器迁移,TFS服务端IP由原10.58.8.231更换至10.58.1.230 TFS客户端更换ip操作比较复杂,请谨慎操作,避免脱库的风险!!! 打开注册表,运行->regedit 找到H ...

  6. log4j相关配置

    1.概述         log4j是Apache提供的一个日志实现,可以用于我们项目中的日志记录,有log4j1和log4j2两个版本,本文使用log4j2这个版本.SLF4J(Simple log ...

  7. 从u-boot的编译结果中提取include目录

    ac@DESKTOP-BJ1MJGM:~/u-boot-2019.01/spl$ arm-linux-gnueabihf-objdump -g u-boot-spl | awk '/The Direc ...

  8. hdu6121 Build a tree

    地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=6121 题面: Build a tree Time Limit: 2000/1000 MS (J ...

  9. JavaScript 操作JSON总结

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...

  10. 不允许有匹配 "[xX][mM][lL]" 的处理指令目标

    八月 , :: 上午 org.apache.tomcat.util.digester.SetPropertiesRule begin 警告: [SetPropertiesRule]{Server/Se ...