首页 > 其他分享 >.net 方法内容缓存简化

.net 方法内容缓存简化

时间:2022-12-16 11:44:42浏览次数:37  
标签:缓存 name Cache 简化 net null public string

调用

        public string GetNodeName(string nodeNum)
        {
            Func<string> func = () =>
            {
                return db.FirstOrDefault<string>("SELECT PNodeName FROM  " + PublicVars.NodeNumTableName + " WHERE PNodeNum=@0 AND AppKey=@1", nodeNum, BaseConfig.AppKey);
            };
            return CacheHelper.Set<string>(MethodBase.GetCurrentMethod(), func);
        }

  

缓存帮助类

/// <summary>
    /// 缓存帮助类
    /// </summary>
    public static class CacheHelper
    {
        /// <summary>
        /// 获取
        /// </summary>
        /// <param name="name">key</param>
        /// <returns></returns>
        public static object Get(string name)
        {
            return HttpRuntime.Cache.Get(name);
        }

        /// <summary>
        /// 移除
        /// </summary>
        /// <param name="name">key</param>
        public static void Remove(string name)
        {
            if (HttpRuntime.Cache[name] != null)
                HttpRuntime.Cache.Remove(name);
        }

        /// <summary>
        /// 写入 
        /// </summary>
        /// <param name="name">key</param>
        /// <param name="value">value</param> 
        /// <param name="cacheDependency">依赖项</param>
        /// <param name="timeOut">过期时间(秒)</param>
        public static void Set(string name, object value, CacheDependency cacheDependency = null, int timeOut = 20 * 60)
        {
            if (cacheDependency == null)
            {
                HttpRuntime.Cache.Insert(name, value, null, DateTime.Now.AddSeconds(timeOut), TimeSpan.Zero);
            }
            else
            {
                HttpRuntime.Cache.Insert(name, value, cacheDependency, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(timeOut));
            }
        }

        /// <summary>
        /// 写入
        /// </summary>
        /// <typeparam name="T">返回类型</typeparam>
        /// <param name="method">缓存方法</param>
        /// <param name="func">数据方法</param>
        /// <param name="timeOut">缓存时间(秒)</param>
        /// <returns>缓存数据</returns>
        public static T Set<T>(MethodBase method, Func<T> func, int timeOut = 20 * 60) where T : class
        {
            ParameterInfo[] parameters = method.GetParameters();
            string cacheKey = $"CH_{method.DeclaringType.Name}_{method.Name}";
            if (parameters.Length > 0)
            {
                cacheKey += "_" + MD5Helper.MD5Encrypt32(SerializeHelper.ToJson(parameters));
            }
            T cacheData = CacheHelper.Get(cacheKey) as T;
            if (cacheData == null)
            {
                cacheData = func();
                CacheHelper.Set(cacheKey, cacheData, null, timeOut);
            }
            return cacheData;
        }
    }

  

其他方法:AOP

标签:缓存,name,Cache,简化,net,null,public,string
From: https://www.cnblogs.com/5tomorrow/p/16986933.html

相关文章

  • VS2022生成控制台引用程序,.net应用导出成exe文件,发部成独立文件的详细图解
     使用vs自带的发布功能就行右键选择发布  选择文件夹模式进行操作   继续选择文件夹操作  路径自己设置,不要怕忘记了,外面可以直接点路劲找到文件夹 ......
  • netstat命令输出详解
    netstat命令输出详解1.列出所有的TCP和UDP端口2.命令输出详解Proto:协议名(tcp协议还是udp协议)recv-Q:网络接收队列,send-Q:网路发送队列a.recv-Q:网络接收队......
  • .NET 7 RC1 正式发布
    从年初2月份发布第一个预览版,经历7个预览版后,Microsoft西雅图时间9月14日发布了.NET7RC1:​​https://devblogs.microsoft.com/dotnet/announcing-dotnet-7-rc-1/​​......
  • 记一次 .NET 某工控MES程序 崩溃分析
    一:背景1.讲故事前几天有位朋友找到我,说他的程序出现了偶发性崩溃,已经抓到了dump文件,Windows事件日志显示的崩溃点在clr.dll中,让我帮忙看下是怎么回事,那到底怎么回事呢?......
  • 强化学习 学习资料汇总强化学习:Q-learning与DQN(Deep Q Network)
    python机器学习四(强化学习)DQN算法流程​​https://www.jianshu.com/p/42507aa63b05/https://www.jianshu.com/p/42507aa63b05/​​基于深度强化学习的智能体系结构参数调......
  • 【云原生 | Kubernetes篇】自建高可用k8s集群搭建
    文末有惊喜文章目录​​自建高可用k8s集群搭建​​​​一、所有节点基础环境​​​​1、环境准备与内核升级​​​​2、安装Docker​​​​二、PKI​​​​三、证书工具准备......
  • Kubernetes(k8s) kubectl rollout resume常用命令
    kubectl在$HOME/.kube目录中查找一个名为config的配置文件。可以通过设置KUBECONFIG环境变量或设置--kubeconfig参数来指定其它kubeconfig文件。本文主要介绍K......
  • 关于我的 “二进制部署 kubernetes 集群” 的体验
    文章目录​​体会​​​​博客整理​​​​调研阶段​​​​部署篇​​​​中期补充调研​​​​后期预计调研​​​​问题解决方案​​体会关于这个事情,终于是告一段落了。......
  • Kubernetes快速实战与核心原理剖析
    K8S概览1.1K8S是什么?K8S官网文档:https://kubernetes.io/zh/docs/home/K8S是Kubernetes的全称,源于希腊语,意为“舵手”或“飞行员”,官方称其是:用于自动部署、扩展和管理“......
  • 网络工具netstat与ss
    建议使用ss命令,2001年的时候netstat1.42版本之后就没更新了,之后取代的工具是ss。netstat命令在很多场景下比较慢。ss可以显示跟netstat类似的信息,但是速度却比netstat快......