C#实现简单的通用缓存实现

  在程序中经常需要用到一些内存缓存,每个获取到的数据都需要重新实现一遍缓存处理,代码冗余,基于此,现提供一种通用的内存缓存实现,直接上代码:

  /// <summary>

  /// 获取缓存对象

  /// </summary>

  /// <typeparam name="T">缓存实体对象</typeparam>

  /// <param name="dele">实体数据获取方法</param>

  /// <param name="cacheKey">缓存关键字</param>

  /// <param name="cacheDuration">缓存时间(分钟)</param>

  /// <param name="objs">实体数据获取参 </param>

  /// <returns>参数T </returns>

 

  public static T GetCacheData<T>( Delegate dele, string cacheKey, int cacheDuration, params ob ject [] objs)

  {

  if ( HttpRuntime.Cache.Get(cacheKey) == null )

  {

  string assemblyName = dele.Target.GetType().Assembly.FullName;

  string typeName = dele.Target.GetType().FullName;

  ob ject instance = Assembly.Load(assemblyName).CreateInstance(typeName);

  MethodInfo methodInfo = dele.Method;

  T result = (T)methodInfo.Invoke(instance, objs);

  HttpRuntime.Cache.Add(cacheKey, result, null , Cache.NoAbsoluteExpiration, TimeSpan .FromMinutes(cacheDuration), CacheItemPriority.NotRemovable, null );

  }

  return (T) HttpRuntime.Cache[cacheKey];

  }

  使用HttpRuntime.Cache缓存数据,缓存数据不存在,用委托和反射调用业务方法获取业务数据并缓存。使用如下:

  string result = CacheHelper.GetCacheData<string>(new Func<string, string>(cacheTest.GetMyData), "one", 5, "test");

  附上另一个可能会重载的版本:

  public static TResult GetCacheData<T1, T2, TResult>(Func<T1, T2, TResult> func, string cacheKey, int cacheTime, T1 para1, T2 para2)

  {

  if (HttpRuntime.Cache.Get(cacheKey) == null)

  {

  Console.WriteLine("未命中缓存");

  TResult result = func(para1, para2);

  HttpRuntime.Cache.Add(cacheKey, result, null, Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(cacheTime), CacheItemPriority.NotRemovable, null);

  return result;

  }

  Console.WriteLine("命中缓存");

  return (TResult)HttpRuntime.Cache.Get(cacheKey);

  }

时间: 2024-08-07 12:20:48

C#实现简单的通用缓存实现的相关文章

ThinkPHP简单使用memcache缓存的方法_php实例

本文实例讲述了ThinkPHP简单使用memcache缓存的方法.分享给大家供大家参考,具体如下: Thinkphp的默认缓存方式是以File方式,在/Runtime/Temp 下生成了好多缓存文件. 服务器装了memcached后想给更改成memecache方式 在Conf/config.php 中添加 'DATA_CACHE_TYPE' => 'Memcache', 'MEMCACHE_HOST' => 'tcp://127.0.0.1:11211', 'DATA_CACHE_TIME'

ThinkPHP简单使用memcache缓存的方法

本文实例讲述了ThinkPHP简单使用memcache缓存的方法.分享给大家供大家参考,具体如下: Thinkphp的默认缓存方式是以File方式,在/Runtime/Temp 下生成了好多缓存文件. 服务器装了memcached后想给更改成memecache方式 在Conf/config.php 中添加 'DATA_CACHE_TYPE' => 'Memcache', 'MEMCACHE_HOST' => 'tcp://127.0.0.1:11211', 'DATA_CACHE_TIME'

Java8简单的本地缓存实现

原文链接 译文链接 翻译:踏雁寻花,校对:丁一 这里我将会给大家演示用ConcurrentHashMap类和lambda表达式实现一个本地缓存.因为Map有一个新的方法,在key为Null的时候自动计算一个新的value值.非常适合实现cache.来看下代码: 当然,这种方式很傻瓜.即使对于一个非常小的数,例如fibonacci(5),上面的代码也会打印出很多行,而且都是在进行重复计算,输出如下(只截取一部分): Calculating f(6) Calculating f(4) Calcula

简单的php缓存类分享

 这篇文章主要介绍了一个php缓存类,文件名使用md5加密,大家参考使用吧 代码如下: <?php class Cache  {  private $dir = "data/cache/";//定义缓存目录   private $key='c_a_sss'; // 文件名md5加密密钥    function set_dir($dirpath)  {   $this->dir=$dirpath;   $this->make_dir($this->dir);  }

一个简单的通用Makefile实现

Makefile是Linux下程序开发的自动化编译工具,一个好的Makefile应该准确的识别编译目标与源文件的依赖关系,并且有着高效的编译效率,即每次重新make时只需要处理那些修改过的文件即可.Makefile拥有很多复杂的功能,这里不可能也没必要一一介绍,为了简化问题的复杂性,本文仅和大家讨论针对单目录下的C/C++项目开发,如何写一个通用的Makefile. 首先,我们假设当前工程目录为prj/,该目录下有6个文件,分别是:main.c.abc.c.xyz.c.abc.h.xyz.h和M

简单的php缓存类分享 php缓存机制_php实例

复制代码 代码如下: <?phpclass Cache { private $dir = "data/cache/";//定义缓存目录  private $key='c_a_sss'; // 文件名md5加密密钥  function set_dir($dirpath) {  $this->dir=$dirpath;  $this->make_dir($this->dir); } function read($key,$minutes=1) {  $filenam

EhCache实现OSGi缓存bundle

代码获取地址:我的github项目,MyCodes/OSGi_Ehcache_bundle目录         本文以开源的EhCahe实现了一个简单的通用缓存bundle.         虽然之前我有几篇博客设计到了OSGi框架,但是缺少一个详细的介绍,所以关于OSGi的相关资料,请参考链接 http://blog.csdn.net/abram163/article/details/2534646 里面搜集的资料还是比较好的.          在准备缓存bundle的时候,我简单在网上搜了

如何通过vue实现一款简单通用的翻页组件

预览 先上一波效果图: 基本元素 首先,翻页组件(以下称"pager组件")一般拥有的元素有: 上一页 第一页 中间显示的页码 最后一页 下一页 初始化时需要的配置有: totalPage(总页数) initPage(初始页) showPrev(是否显示上一页) showNext(是否显示下一页) showItems(中间显示几页) showJump(是否显示跳转到第几页) 这些可以通过vue的props来接收. 另外,pager组件本身需要有一个记录当前页的currentPage,p

简单实用的网站PHP缓存类实例_php技巧

缓存技术在实际使用当中应用非常广泛,可以有效减轻对服务器数据库的访问压力,提高运行速度.目前很多CMS内容管理系统中频繁使用缓存机制来提高系统运行的效率.本文以一个简单实用的缓存类为例,帮助大家参考下缓存的机制与写法. 缓存文件cache.php代码如下: <?php /* 用户需要事先定义的常量: _CachePath_ 模板缓存路径 _CacheEnable_ 自动缓存机制是否开启,未定义或为空,表示关闭自动缓存机制 _ReCacheTime_ 自动重新缓存间隔时间,单位为秒,未定义或为空,