Memcache深入

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进行操作了



猜你喜欢

转载自blog.csdn.net/Fanbin168/article/details/80854158