概述

  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初始化驱动的时候,可以给定一个集合,如

 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、 代码

             //分布式Memcached服务器ip 端口
string[] servers = { "172.20.10.7:11211"}; //Memcache机器IP
//初始化池
SockIOPool pool = SockIOPool.GetInstance();
pool.SetServers(servers); //关联连接池
pool.InitConnections = ; //初始化链接
pool.MinConnections = ; //最小连接数
pool.MaxConnections = ; //最大连接数
pool.SocketConnectTimeout = ; //Socket超时连接时间
pool.SocketTimeout = ; //Socket超时时间
pool.MaintenanceSleep = ; //Socket休眠时间
pool.Failover = true;
pool.Nagle = false;
pool.Initialize(); //初始化
//客户端实例
MemcachedClient mc = new MemcachedClient();
mc.EnableCompression = false; //启动压缩
mc.Add("keykey", "valuevalue"); //添加
//mc.Delete("keykey"); //删除
//mc.Set("", ""); //设置
//mc.Get(""); //获取

实现:

成功

示例DEMO

链接:https://pan.baidu.com/s/1QhHEO71jMDCbZ72lbFNNcw
提取码:0a5i

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

最新文章

  1. Linux C++ 开发常用工具,常用指令工作手册
  2. iOS音频
  3. ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]的用法
  4. CSS 分组
  5. html写法对gzip压缩率的影响
  6. vim tab 和4个空格
  7. SignalR 简介
  8. 安装 NoMachine(NX) client and server
  9. Bresenham算法画填充圆及SDL代码实现
  10. 加一个 时间戳 TimeStamp 可以解决 重复提交问题 SqlServer
  11. dubbo 运行过程
  12. hdu 5087 Revenge of LIS II
  13. Sqlite库的基本操作
  14. Java学习前的一些准备
  15. HDU 6119 小小粉丝度度熊 (区间去重)【尺取】
  16. BFC 形成条件
  17. BrainFuck 指令
  18. webstorm安装 利用host破解
  19. eureka client服务续约源码分析
  20. FileZilla等软件搭建ftp服务器

热门文章

  1. cookbook_模块和包
  2. $.ajax()在IE9下的兼容性问题
  3. Shell.Users 提权
  4. JavaScript ES6和ES5闭包的小demo
  5. Placement_pools on Rados-GW
  6. 1、大型项目的接口自动化实践记录--robotframework环境搭建
  7. npm包开发与发布
  8. 微信公众号接入服务器验证(Go实现)
  9. asp.net core系列 69 Amazon S3 资源文件上传示例
  10. GooglePlay新版排行榜接入