发一个我自己写的.net中使用的缓存封装类(算是第三版了)
2009-04-22 15:52
253 查看
先上代码:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Collections;
using System.Text;
namespace Web
namespace Web
{
public enum WebCacheKey
{
UserInfo
}
}
代码很简单,类WebCache用于获取、设置、删除缓存,WebCacheKey提供了缓存键的统一管理——好处就是可以在多处重用,尽量避免同样一份数据多次缓存的问题。WebCahce类我最初是设计为只包括静态方法的,也没有WebCacheKey枚举,主要是想方便调用,后来使用中发现往往有多次查询同一个缓存项及在判断缓存是否存时代码不太好看的问题,如下面这样:
本篇文章发的WebCache类的用法
public static UserInfo GetUserInfoFromCache(long uid)
{
WebCache<UserTotalInfo> c = new WebCache<UserTotalInfo>(WebCacheKey.UserInfo, uid);
if (!c.IsExist)
c.Data = new UserInfo(uid);
return c.Data;
}
虽然是多个了类的实例化操作,但下面的操作就方便多了,也不会出现多次重复查询缓存值的现象,性能上会提高一点
注:上面所有代码中用到的Config.App.EnabledCaching为一个配置属性,就是从web.config中读取的是不是需要缓存数据的标志,在些就不再提供实现代码了(大家都知道^__^)
使用这个类的好处不紧紧方便书写代码,还可以在网站发展壮大添加缓存服务器(如Velocity - Microsoft Distributed Cache)时,直接修改这个类的方法即可,不用修改所有的缓存处理代码
如果错误,欢迎大家指正
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Collections;
using System.Text;
namespace Web
namespace Web
{
public enum WebCacheKey
{
UserInfo
}
}
代码很简单,类WebCache用于获取、设置、删除缓存,WebCacheKey提供了缓存键的统一管理——好处就是可以在多处重用,尽量避免同样一份数据多次缓存的问题。WebCahce类我最初是设计为只包括静态方法的,也没有WebCacheKey枚举,主要是想方便调用,后来使用中发现往往有多次查询同一个缓存项及在判断缓存是否存时代码不太好看的问题,如下面这样:
本篇文章发的WebCache类的用法
public static UserInfo GetUserInfoFromCache(long uid)
{
WebCache<UserTotalInfo> c = new WebCache<UserTotalInfo>(WebCacheKey.UserInfo, uid);
if (!c.IsExist)
c.Data = new UserInfo(uid);
return c.Data;
}
虽然是多个了类的实例化操作,但下面的操作就方便多了,也不会出现多次重复查询缓存值的现象,性能上会提高一点
注:上面所有代码中用到的Config.App.EnabledCaching为一个配置属性,就是从web.config中读取的是不是需要缓存数据的标志,在些就不再提供实现代码了(大家都知道^__^)
使用这个类的好处不紧紧方便书写代码,还可以在网站发展壮大添加缓存服务器(如Velocity - Microsoft Distributed Cache)时,直接修改这个类的方法即可,不用修改所有的缓存处理代码
如果错误,欢迎大家指正
相关文章推荐
- android轻量级开源缓存框架——ASimpleCache(ACache)源码分析(封装好了一个工具类供大家使用)
- 毕加索的艺术——Picasso,一个强大的Android图片下载缓存库,OkHttpUtils的使用,二次封装PicassoUtils实现微信精选
- Go/Python/Erlang编程语言对比分析及示例 基于RabbitMQ.Client组件实现RabbitMQ可复用的 ConnectionPool(连接池) 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!
- 毕加索的艺术——Picasso,一个强大的Android图片下载缓存库,OkHttpUtils的使用,二次封装PicassoUtils实现微信精选
- 关于.net的out 关键字的使用的一个小练习
- 缓存技术Redis在C#中的使用及Redis的封装
- .Net 2.0 缓存使用
- 使用xib封装一个自定义View
- 详细分享IBatis.net缓存的使用方法
- 使用HashMap做一个缓存案例【缓存一张图片】
- JAVA调用Tuxedo服务——使用JNI封装Tuxedo客户端的一个例子
- 使用PHP提供的CURL模块采集任意网页 已经封装一个类超级好用 请拿走
- QT:我自己封装的一个简易的二维表类SimpleTable
- 使用 MSIL 为 Enum.HasFlag 封装一个泛型的扩展方法
- 对jsp的一个小结(4)使用JavaBean封装数据
- 使用ThreadLocal来实现一个本地缓存
- .NET : 监控ASP.NET应用程序的缓存使用内存数变化和命中情况
- 一个Linux/Unix下的excel库“xlslib”的使用及其简单封装
- BerkeleyDB使用的一个简单封装
- .Net网络通讯编程[利用Socket实现字串、文件、序列化对象传输]--使用封装的网络服务3[聊天室][使用IE浏览本页]