1>.Net内置内存缓存
asp.net中是有缓存的实现:HttpContext.Cache,缓存的数据是放到Web服务器的进程内存里。在控制台、WinForm、子线程、SignalR等不支持HttpContext的地方还可以使用MemoryCache.Default(System.Runtime.Caching这个程序集中),HttpContext.Cache其实就是对MemoryCache的封装。
MemoryCache的用法:
class Program
{
static void Main(string[] args)
{
//MemoryCache类在System.Runtime.Caching这个程序集下
//存
MemoryCache.Default.Add("UserName", "Tom", DateTimeOffset.Now.AddMinutes(1));
//取
if (MemoryCache.Default.Contains("UserName"))
{
string username = (string)MemoryCache.Default["UserName"];
}
}
}
进程内缓存最大的优点就是效率高。在可预期数据量不大的情况下推荐使用。
如果数据量比较大或者集群服务器比较多,就要用单独的分布式缓存了,也就是搞一台或者多台专门服务器保存缓存数据,所有服务器都访问分布式缓存服务器。
2>Memcached
Memcached是一个专门用来做缓存的服务器,而且缓存的数据都在内存中。Memcached就相当于一个Dictionary键值对集合,保存的是键值对,然后根据key取value。
当然web服务器和Memcached之间还是要网络间通讯,效率还是没有进程内缓存效率高。Memcached程序重启之后数据就会消失。(缺点)
Memcached的优点:
1> 多线程,可以充分利用CPU多核的性能;2>做缓存性能最高;
Memcached的缺点:
1>只能保存键值对数据,键值对只能是字符串,如果有对象数据只能自己序列化成json字符串;2>数据保存在内存中,重启后会丢失;
3>Key最大长度255个字符,Value最长1M。
Memcached的安装:
.Net连接Memcached:
安装完Memcached的服务端后,然后安装Memcached 的.Net 开发包:Install-Package EnyimMemcached
这样就可以在我们的vs项目中使用.Net代码来对Memcached进行操作了