概述

memcache是一套开放源的分布式高速缓存系统。由服务端和客户端组成,以守护程序(监听)方式运行于一个或多个服务器中,随时会接收客户端的连接和操作。memcache主要把数据对象缓存到内存中,通过在内存里维护一个统一的巨大的hash表。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。memcache基于一个存储键/值对的hashmap进行存储对象到内存中。memcache是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。

特性:

•在 Memcached中可以保存的item数据量是没有限制的,只要内存足够 。

•Memcached单进程在32位系统中最大使用内存为2G,若在64位系统则没有限制,这是由于32位系统限制单进程最多可使用2G内存,要使用更多内存,可以分多个端口开启多个Memcached进程 。

•最大30天的数据过期时间,设置为永久的也会在这个时间过期,常量REALTIME_MAXDELTA

•单个item最大数据是1MB,超过1MB数据不予存储,常量POWER_BLOCK 1048576进行控制

Memcache集群原理

Memcache:通过客户端驱动实现集群。Redis、MongoDb:通过服务器端实现集群;Memcache初始化驱动的时候,可以给定一个集合,如


1 string[] servers = { "172.20.10.7:11211","172.20.10.8:11211"};

驱动实现集群原理图

Memcache优缺点:

1、不能作为持久化保存

2、存储数据有限:1M【大于1M,人为进行分割】

3、存储只能key-value

4、集群数据没有复制和同步机制。【奔溃不会影响程序,没有主从复制机制(没有额外复制开销)】

5、内存回收不是很及时,LRU:未使用内存>过期内存>最近最少使用内存 惰性删除(也算是缺点)

好了,我们现在大概知道Memcache干什么用的呢,其实方法很简单,请参考我上篇博客:https://www.cnblogs.com/chenyanbin/p/11415368.html

代码实现:

1、下载dll客户端类库

地址:https://sourceforge.net/projects/memcacheddotnet/

百度云盘:

链接:https://pan.baidu.com/s/1tIkdYdp8rkKtXMeOeT24AA

提取码:5yk2

2、引入类库

3、添加引用

4、 代码


 1             //分布式Memcached服务器ip 端口
 2             string[] servers = { "172.20.10.7:11211"}; //Memcache机器IP
 3             //初始化池
 4             SockIOPool pool = SockIOPool.GetInstance();
 5             pool.SetServers(servers); //关联连接池
 6             pool.InitConnections = 3; //初始化链接
 7             pool.MinConnections = 3; //最小连接数
 8             pool.MaxConnections = 5; //最大连接数
 9             pool.SocketConnectTimeout = 1000; //Socket超时连接时间
10             pool.SocketTimeout = 3000; //Socket超时时间
11             pool.MaintenanceSleep = 30; //Socket休眠时间
12             pool.Failover = true;
13             pool.Nagle = false;
14             pool.Initialize(); //初始化
15             //客户端实例
16             MemcachedClient mc = new MemcachedClient();
17             mc.EnableCompression = false; //启动压缩
18             mc.Add("keykey", "valuevalue"); //添加
19             //mc.Delete("keykey"); //删除
20             //mc.Set("", ""); //设置
21             //mc.Get(""); //获取

实现:

成功

示例DEMO

链接:https://pan.baidu.com/s/1QhHEO71jMDCbZ72lbFNNcw

提取码:0a5i

如果这篇文章对你有帮助,帮忙推荐下,有不懂的地方欢迎下方留言~~

相关文章