分享自己写的一个.net方法缓存源码

在服务器性能优化中,我们更多的是要考虑到缓存的使用,分享一个自己编写的方法缓存的框架,使用非常方便。话不多说,先上使用例子:

1.定义要使用缓存的类及方法:

 

 public class Example
    {

        [CacheMethod(ExpirationSecond = 60*10)]
        public virtual int Fun2(int a, int b)
        {
            return a + b;
        }

    }

说明:

  1.被缓存的方法必须使用虚方法

  2.特性:CacheMethod.ExpirationSecond         指定缓存的相对失效时间(单位秒)    如果不指定该特性,缓存相对失效时间默认为60秒

2.创建缓存代理对象

Example example=MethodCacheFactory.GetMethodCacheProxyObject<Example>();

3.调用缓存方法

var ret=example.Fun2(1, 1);//第一次调用会将返回值放入缓存中
ret = example.Fun2(1, 1);//第二次调用,如果缓存没有失效的话,会去缓存中拿到返回值,不会执行对应方法,如果缓存已经失效,那么则会执行原方法。

 

扩展:

  代码中使用的是内存缓存,如果想使用分布式缓存如redis,请实现接口

 

并通过相关代码替换默认缓存容器:

ICacheContainer cacheContainer = null;//请实例化对应容器
MethodCacheFactory.SetCacheContainer(cacheContainer);//替换缓存默认容器

完整项目及源码:

https://gitee.com/qianqianhr/dotnet_method_cache.git

posted on 2019-04-29 14:27  浅浅鸿儒  阅读(519)  评论(3编辑  收藏  举报

导航