缓存操作类

引入
using
System.Web.Caching;
复制代码
 /*
       Key//缓存名
       Value//要缓存的对象
       Dependencies//依赖项
       AbsoluteExpiration//绝对过期时间
       SlidingExpiration//相对过期时间
       Priority//优先级
       CacheItemRemovedCallback //缓存过期引发事件
        */
    /// <summary>
    /// 缓存
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public class CacheHelper<T>
    {
        /// <summary>
        /// 获取缓存数据
        /// </summary>
        /// <param name="cachekey"></param>
        /// <returns></returns>
        public static T GetCache(string cachekey)
        {
            return (T)HttpRuntime.Cache[cachekey];
        }
        /// <summary>
        /// 数据插入缓存(永不过期)
        /// </summary>
        /// <param name="cachekey"></param>
        /// <param name="data"></param>
        public static void SetCache(string cachekey, T data)
        {
            HttpRuntime.Cache.Insert(cachekey, data);
        }
        /// <summary>
        /// 数据插入缓存(依赖)
        /// </summary>
        /// <param name="cachekey"></param>
        /// <param name="data"></param>
        /// <param name="dependencies">对文件或者目录的依赖</param>
        public static void SetCache(string cachekey, T data, CacheDependency dependencies)    //依赖
        {
            HttpRuntime.Cache.Insert(cachekey, data, dependencies);
        }
        /// <summary>
        /// 数据插入缓存(绝对事件过期)
        /// </summary>
        /// <param name="cachekey"></param>
        /// <param name="data"></param>
        /// <param name="timeout"></param>
        public static void SetCache(string cachekey, T data, TimeSpan timeout)
        {
            HttpRuntime.Cache.Insert(cachekey, data, null, DateTime.MaxValue, timeout, CacheItemPriority.NotRemovable, null);
        }
        /// <summary>
        /// 设置缓存数据(绝对时间过期)
        /// </summary>
        /// <param name="cachekey"></param>
        /// <param name="objObject"></param>
        /// <param name="absoluteExpiration"></param>
        /// <param name="slidingExpiration"></param>
        public static void SetCache(string cachekey, T data, DateTime absoluteExpiration, TimeSpan slidingExpiration)
        {
            HttpRuntime.Cache.Insert(cachekey, data, null, absoluteExpiration, slidingExpiration);
        }
        /// <summary>
        /// 移除指定缓存数据
        /// </summary>
        /// <param name="cachekey"></param>
        public static void RemoveAllCache(string cachekey)
        {
            HttpRuntime.Cache.Remove(cachekey);
        }
        /// <summary>
        /// 移除全部缓存
        /// </summary>
        public static void RemoveAllCache()
        {
            var cache = HttpRuntime.Cache;
            var cacheEnum = cache.GetEnumerator();
            while (cacheEnum.MoveNext())
            {
                cache.Remove(cacheEnum.Key.ToString());
            }
        }

    }
复制代码

 

posted @   鞍山老菜鸟  阅读(224)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示