C# Memcache集群原理、客户端配置详细解析
概述
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
如果这篇文章对你有帮助,帮忙推荐下,有不懂的地方欢迎下方留言~~