zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C#Memcached缓存用法实例详解

c#实例缓存 详解 用法 memcached
2023-06-13 09:15:28 时间

本文实例讲述了C#中Memcached缓存的用法,分享给大家供大家参考。具体方法如下:

ICacheStrategy.cs文件如下:

复制代码代码如下:

publicinterfaceICacheStrategy
{
       ///<summary>
       ///添加数据到缓存
       ///</summary>
       ///<paramname="objId">缓存名称</param>
       ///<paramname="o">缓存内容</param>
       ///<paramname="second">缓存时间(秒)</param>
       voidAdd(stringobjId,objecto,intsecond);

       ///<summary>
       ///添加数据到缓存(依赖其它缓存)
       ///</summary>
       ///<paramname="objId">缓存名称</param>
       ///<paramname="o">缓存内容</param>
       ///<paramname="second">缓存时间(秒)</param>
       ///<paramname="dependKey">依赖缓存名称数组</param>
       voidAddCacheDepend(stringobjId,objecto,intsecond,string[]dependKey);

       ///<summary>
       ///添加数据到缓存(依赖文件)
       ///</summary>
       ///<paramname="objId">缓存名称</param>
       ///<paramname="o">缓存内容</param>
       ///<paramname="second">缓存时间(秒)</param>
       ///<paramname="files">依赖缓存名称文件名数组</param>
       voidAddFileDepend(stringobjId,objecto,intsecond,string[]files);

       ///<summary>
       ///删除指定缓存
       ///</summary>
       ///<paramname="objId"></param>
       voidRemoveCache(stringobjId);

       ///<summary>
       ///删除所有缓存
       ///</summary>
       voidRemoveCacheAll();

       ///<summary>
       ///删除匹配到的缓存
       ///</summary>
       ///<paramname="pattern"></param>
       ///<returns></returns>
       voidRemoveCacheRegex(stringpattern);

       ///<summary>
       ///获取所有缓存键
       ///</summary>
       ///<returns></returns>
       IList<string>GetCacheKeys();

       ///<summary>
       ///搜索匹配到的缓存
       ///</summary>
       ///<paramname="pattern"></param>
       ///<returns></returns>
       IList<string>SearchCacheRegex(stringpattern);

       ///<summary>
       ///获得缓存数据
       ///</summary>
       ///<paramname="objId"></param>
       ///<returns></returns>
       objectGetCacheData(stringobjId);

       ///<summary>
       ///判断此缓存是否有效
       ///</summary>
       ///<paramname="objID"></param>
       ///<returns></returns>
       boolHasCache(stringobjID);
}

MemcachedStrategy.cs文件如下:

复制代码代码如下:

publicclassMemcachedStrategy:ICacheStrategy
{
       #regionICacheStrategy成员

       ///<summary>
       ///添加数据到缓存
       ///</summary>
       ///<paramname="objId">缓存名称</param>
       ///<paramname="o">缓存内容</param>
       ///<paramname="second">缓存时间(秒)</param>
       publicvoidAdd(stringobjId,objecto,intsecond)
       {
           if(second>0)
           {
               MemcachedManager.CacheClient.Set(objId,o,DateTime.Now.AddSeconds(second));
           }
           else
           {
               MemcachedManager.CacheClient.Set(objId,o);
           }
       }

       #region缓存依赖没有用到memcached
       ///<summary>
       ///添加数据到缓存(依赖其它缓存)
       ///</summary>
       ///<paramname="objId">缓存名称</param>
       ///<paramname="o">缓存内容</param>
       ///<paramname="second">缓存时间(秒)</param>
       ///<paramname="dependKey">依赖缓存名称数组</param>
       publicvoidAddCacheDepend(stringobjId,objecto,intsecond,string[]dependKey)
       {
           CacheDependencydependencies=newCacheDependency(null,dependKey,DateTime.Now);
           HttpRuntime.Cache.Insert(objId,o,dependencies,DateTime.Now.AddSeconds((double)second),Cache.NoSlidingExpiration,CacheItemPriority.Default,null);
       }

       ///<summary>
       ///添加数据到缓存(依赖文件)
       ///</summary>
       ///<paramname="objId">缓存名称</param>
       ///<paramname="o">缓存内容</param>
       ///<paramname="second">缓存时间(秒)</param>
       ///<paramname="files">依赖缓存名称文件名数组</param>
       publicvoidAddFileDepend(stringobjId,objecto,intsecond,string[]files)
       {
           CacheDependencydependencies=newCacheDependency(files,DateTime.Now);
           HttpRuntime.Cache.Insert(objId,o,dependencies,DateTime.Now.AddSeconds((double)second),Cache.NoSlidingExpiration,CacheItemPriority.Default,null);
       }
       #endregion

       ///<summary>
       ///删除指定缓存
       ///</summary>
       ///<paramname="objId"></param>
       publicvoidRemoveCache(stringobjId)
       {
           if(MemcachedManager.CacheClient.KeyExists(objId))
               MemcachedManager.CacheClient.Delete(objId);
       }

       ///<summary>
       ///删除所有缓存
       ///</summary>
       publicvoidRemoveCacheAll()
       {
           MemcachedManager.CacheClient.FlushAll();
       }

       ///<summary>
       ///删除匹配到的缓存
       ///</summary>
       ///<paramname="pattern"></param>
       publicvoidRemoveCacheRegex(stringpattern)
       {
           IList<string>list=SearchCacheRegex(pattern);
           foreach(variteminlist)
           {
               MemcachedManager.CacheClient.Delete(item);
           }
       }

       ///<summary>
       ///获取所有缓存键
       ///</summary>
       ///<returns></returns>
       publicIList<string>GetCacheKeys()
       {
           returnMemcachedManager.GetAllKeys();
       }

       ///<summary>
       ///搜索匹配到的缓存
       ///</summary>
       ///<paramname="pattern"></param>
       ///<returns></returns>
       publicIList<string>SearchCacheRegex(stringpattern)
       {
           List<string>l=newList<string>();
           IList<string>cacheKeys=MemcachedManager.GetAllKeys();
           foreach(varitemincacheKeys)
           {
               if(Regex.IsMatch(item,pattern))
               {
                   l.Add(item);
               }
           }
           returnl.AsReadOnly();
       }

       ///<summary>
       ///获得缓存数据
       ///</summary>
       ///<paramname="objId"></param>
       ///<returns></returns>
       publicobjectGetCacheData(stringobjId)
       {
           returnMemcachedManager.CacheClient.Get(objId);
       }

       ///<summary>
       ///判断此缓存是否有效
       ///</summary>
       ///<paramname="objID"></param>
       ///<returns></returns>
       publicboolHasCache(stringobjID)
       {
           returnMemcachedManager.CacheClient.KeyExists(objID);
       }
       #endregion
}

希望本文所述对大家的C#程序设计有所帮助。