.NET缓存方案对比
类 | 存储方式 | 存储位置 | 过期策略 | 优先级 | 线程安全 | 应用场景 |
Dictionary<string,object> | hash | 内存 | 不支持 | 不支持 | 不支持 | 很少 |
Enterprise Library 5.0's Caching Application Block |
hash(在内存中) |
内存、数据库、文件等 |
支持 | 支持 | 支持 | (过时、不推荐) |
Caching by .NET Framework |
hash | 内存 | 支持 | 支持 | 支持 | 较小规模(推荐) |
memcached | ||||||
redis | 内存 | 支持 | 支持 | 支持 | 大规模(推荐) |
.NET数据缓存框架(Caching by .NET Framework)
类 | 支持 | 功能 | 应用场景 |
System.HttpRuntime.Cache System.Web.Caching.Cache System.Web.Context.Current.Cache |
全部 | 网站中缓存对象实例,HTML等 | web |
System.Runtime.Caching | .NET 4.0 | 各种对象 | web / non-web |
System.Web.Caching.OutputCacheProvider | .NET 4.0 | 网站中缓存HTML页面 | web |
说明
1,System.Web.Caching.Cache ,System.Web.Context.Current.Cache 在实现上都是调用的System.HttpRuntime.Cache 。
2,System.Runtime.Caching完全可以用于替代Enterprise Library Cache Application Block的作用。
3,System.Runtime.Caching.ObjectCache: 抽象类,可用于自定义的缓存扩展。它定义了如下功能:
(1)创建并管理缓存条目;
(2)指明超时 和退出信息;
(3)缓存条目发生变化时触发相应的消息;
System.Runtime.Caching.MemoryCache:是System.Runtime.Caching.ObjectCache的实现,一般足够使用。
4,System.Web.Caching.OutputCacheProvider 抽象类,可用于自定义的网页HTML页面缓存。
redis
Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。特点:
(1)Redis是完全在内存中保存数据的数据库,使用磁盘只是为了持久性目的;
(2)Redis相比许多键值数据存储系统有相对丰富的数据类型;
(3)Redis可以将数据复制到任意数量的从服务器中;
参考:
全面认识一下.NET 4.0的缓存功能
http://www.cnblogs.com/hjf1223/archive/2010/07/16/net_4_caching.html
Caching in .NET Framework Applications
https://msdn.microsoft.com/en-us/library/dd997357(v=vs.110).aspx