zoukankan      html  css  js  c++  java
  • 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
    }

  • 相关阅读:
    Node Sass version 5.0.0 is incompatible with^4.0.0
    解决vue-cli引入sass,报错:this.getResolve is not a function问题
    解决nuxt官方脚手架的一些坑:1、支持es6+语法 2、样式支持sass
    针对【create-nuxt-app新版本v3.2.0】构建项目时没有server配置以及运行后弹出收集匿名数据选项等问题的解决方法
    create-nuxt-app创建出来的目录没有server文件夹
    Redis安装(Windows环境下Redis安装)
    koa2中间件,路由,cookies
    用同步的写法来执行异步操作, async, awiat
    koa2 安装与启动
    练习:自己写一个容器ArrayList集合 一一数组综合练习
  • 原文地址:https://www.cnblogs.com/xiaocandou/p/4602973.html
Copyright © 2011-2022 走看看