概述
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, 代码
- // 分布式 Memcached 服务器 ip 端口
- string[] servers = { "172.20.10.7:11211"}; //Memcache 机器 IP
- // 初始化池
- SockIOPool pool = SockIOPool.GetInstance();
- pool.SetServers(servers); // 关联连接池
- pool.InitConnections = 3; // 初始化链接
- pool.MinConnections = 3; // 最小连接数
- pool.MaxConnections = 5; // 最大连接数
- pool.SocketConnectTimeout = 1000; //Socket 超时连接时间
- pool.SocketTimeout = 3000; //Socket 超时时间
- pool.MaintenanceSleep = 30; //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
如果这篇文章对你有帮助, 帮忙推荐下, 有不懂的地方欢迎下方留言~~
来源: https://www.cnblogs.com/chenyanbin/p/11441490.html