php缓存模块,C#的一个小菜鸟所写的缓存模块

做了一个缓存模块。主要是难有一个完整的缓存类支持多种缓存并且简单,所以就倒腾了个。
Discuz!nt的缓存写的很牛但是的确很复杂。尽管主要是为了解决WEB园中缓存同步的场景,但是觉得比较无用。不过据说最新版的修改了。如果能够开启WEB园那应该就不是虚拟机了,既然是自己的机器
为什么装个Memcached就会更好啊。纠结啊。所以那个缓存类也是很值得使用的。
自己就写了个。反正简单用着。还行。估计有不少BUG。如果有bug就告诉下我,我好修改。里面的MemCached有部分方法没实现,主要是因为默认的方法并不包含这些,所以这个可以自己去修改下客户端。不过那样会破坏Memcached的效率。
MemCached的客户端包都一起封装进去了。省了想用的人再去下载,还有就是因为因为默认的那个叫EN什么的库有点bug。后来就稍微修改了下。(名字忘记了不好意思呵呵。之后我会把
那个给完整的发下,命名空间我也改了。主要是为了好区分。给开源团队道歉下。同时貌似memcached是mit协议的 允许修改的。)
代码写的比较菜。使用泛型只是为了让上面调用少掉类型转化,代码也会变得简单。目前是支持两个都同时运行。如果需要单一的缓存的话自己去倒腾下吧。使用微软企业库也可以自己实现下接口。推荐使用TryGetValue(string key out T value);方法。
其中有一个EnableCache。这个可以写到配置项里来开启是否使用缓存。该有的都有了。代码简单,越简单的代码越好维护。(估计要被架构师拍砖了。)
发成块的代码只是为了简单使用了。大家都免得重复的制造无数的轮子,现在轮子真的到处都是了。
废话一堆。直接发代码了。晕不支持上传,强烈的批评DUDU老大。
主要接口如下:
using System; using System.Collections.Generic; using System.Text; using System.Collections.Specialized; using System.Collections.ObjectModel; namespace Doodle.Cache { /// /// 缓存类接口 /// public interface ICache { /// /// 获取一个值,指示当前的缓存是否可用 /// bool EnableCache { get; } /// /// 获取缓存的类型 /// CacheType Type { get; } /// /// 检查缓存中是否存在指定的键 /// /// 要检查的键
/// 返回一个值,指示检查的键是否存在 bool Contains(string key); /// /// 检查系统中是否存在指定的缓存 /// /// 类型 /// 缓存key
/// 返回这个类型的值是否存在 bool Contains(string key); /// /// 从缓存中获取指定键的值 /// /// 要获取的键
/// 返回指定键的值 T Get(string key); /// /// 获取缓存中键值的数量 /// int Count { get; } /// /// 添加缓存 /// /// 关键字
/// 缓存值
/// 返回添加的键值 void Add(string key, T value); /// /// 添加缓存 /// /// 关键字
/// 缓存值
/// 过期时间
/// 返回添加的键值 void Add(string key, T value, DateTime absoluteExpiration); /// /// 添加缓存 /// /// 关键字
/// 缓存值
/// 保存时间
/// 返回添加的键值 void Add(string key, T value, TimeSpan slidingExpiration); /// /// 添加缓存 /// /// 关键字
/// 缓存值
/// 保存时间(分钟)
/// 返回添加的键值 void Add(string key, T value, int minutes); /// /// 添加缓存 /// /// 关键字
/// 缓存值
/// 优先级
/// 保存时间
void Add(string key, T value, CachePriority priority, TimeSpan slidingExpiration); /// /// 添加缓存 /// /// 关键字
/// 缓存值
/// 优先级
/// 过期时间
void Add(string key, T value, CachePriority priority, DateTime absoluteExpiration); /// /// 尝试返回指定的缓存 /// /// 缓存内容的类型 /// 缓存的key
/// 缓存的内容
/// 是否存在这个缓存 bool TryGetValue(string key, out T value); /// /// 移除键中某关键字的缓存并返回相应的值 /// /// 关键字
void Remove(string key); /// /// 移除键中带某关键字的缓存 /// /// 关键字
/// 返回被移除的项的数量 int RemoveContains(string key); /// /// 移除键中以某关键字开头的缓存 /// /// 关键字
/// 返回被移除的项的数量 int RemoveStartWith(string key); /// /// 移除键中以某关键字结尾的缓存 /// /// 关键字
/// 返回被移除的项的数量 int RemoveEndWith(string key); /// /// 移除键中所有的缓存 /// /// 返回被移除的项的数量 int Clear(); /// /// 缓存中所有的键列表 /// ReadOnlyCollection Keys { get; } } /// /// 缓存的优先级 /// public enum CachePriority { /// /// 无 /// None = 0, /// /// 低 /// Low = 1, /// /// 普通 /// Normal = 2, /// /// 高 /// High = 3, /// /// 不能被删除 /// NotRemovable = 4, } }
那就先放个腾讯的下载地址吧。
http://hz.ftn.qq.com/ftn_handler/870efeb55082642add10f13a791aec0567339579b5bfc2550aab630d9e4a74b8608460d68d1abcf1319204b827e382f8b96b03e77a2d23d4ed2cc5a203077ae3/Cache.rar?k=5c356531e7c89ac66227923a16635716500504535351070d4f505507094e51080157485006060714000407065353530907050052306a657a03560d541e11044b6271&fr=00&&txf_fid=aac7cf913a80da2afbacc21f432d1f51c87c141a
下一篇发下Hash关键词屏蔽过滤包。 下下一篇讨论实例化对象以及代码的一些事情。
Tags:  回写高速缓存 快乐的小菜鸟 小菜鸟之歌 小菜鸟 php缓存模块

延伸阅读

最新评论

发表评论