当前位置: 首页 > 编程笔记 >

C# Memcached缓存用法实例详解

步博厚
2023-03-14
本文向大家介绍C# Memcached缓存用法实例详解,包括了C# Memcached缓存用法实例详解的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了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 > 0)             {                 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#程序设计有所帮助。

 类似资料:
  • 本文向大家介绍PHP内存缓存功能memcached示例,包括了PHP内存缓存功能memcached示例的使用技巧和注意事项,需要的朋友参考一下 下文简单介绍了memcached类的应用示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。 一、memcached 简介 在很多场合,我们都会听到 memcached 这个名字,但很多同学只是听过,并没有用过或实际了解过,只知道它是一个很不错的东东。

  • 本文向大家介绍C#双缓冲技术实例详解,包括了C#双缓冲技术实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了C#双缓冲技术。分享给大家供大家参考,具体如下: 双缓冲解决闪烁问题。 整理: GDI+的双缓冲问题 一直以来的误区:.net1.1 和 .net 2.0 在处理控件双缓冲上是有区别的。 .net 1.1 中,使用:this.SetStyle(ControlStyles.Dou

  • 本文向大家介绍Java实现LRU缓存的实例详解,包括了Java实现LRU缓存的实例详解的使用技巧和注意事项,需要的朋友参考一下 Java实现LRU缓存的实例详解 1.Cache Cache对于代码系统的加速与优化具有极大的作用,对于码农来说是一个很熟悉的概念。可以说,你在内存中new 了一个一段空间(比方说数组,list)存放一些冗余的结果数据,并利用这些数据完成了以空间换时间的优化目的,你就已经

  • 本文向大家介绍Java缓存池代码实例详解,包括了Java缓存池代码实例详解的使用技巧和注意事项,需要的朋友参考一下 这篇实例中有四个类,分别为 CacheItem  缓存实体类 CachePool  缓存池 Student  学生实体类 MainTest  主测试类 其中,缓存实体类CacheItem  中存放管理学生实体对象Student  ,缓存实体类CacheItem  存放在缓存池Cach

  • 本文向大家介绍C#的FileSystemWatcher用法实例详解,包括了C#的FileSystemWatcher用法实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例详述了C#的FileSystemWatcher用法。分享给大家供大家参考。具体用法如下: FileSystemWatcher控件主要功能: 监控指定文件或目录的文件的创建、删除、改动、重命名等活动。可以动态地定义需要监控的文

  • 本文向大家介绍Yii配置与使用memcached缓存的方法,包括了Yii配置与使用memcached缓存的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Yii配置与使用memcached缓存的方法。分享给大家供大家参考,具体如下: 1. 下载memcached软件包,解压,把memcached.exe 放到随意一个地方,比如:d:/memcached/ 下。 2. 开始->运行->输