Web缓存技术-Memcached
来源:互联网 发布:xnview mac 破解 编辑:程序博客网 时间:2024/06/12 17:33
互联网上的应用、网站,随着用户的增长,功能的增强,会导致服务器超载,响应变慢等问题。缓存技术是减轻服务器压力、加快服务响应时间、提升用户体验的有效途径。Memcached是非常流行的缓存系统,这里介绍对Memcached的安装、设定,以及在集群环境下的使用。
Memcached简介
Memcached是一个开源、高性能、分布式的内存缓存系统,用于加速动态网站的访问,减轻数据库负载。
Memcached使用了Slab Allocator的机制分配、管理内存,解决了内存碎片的问题。
Memcached虽然可以在多线程模式下运行,但线程数通常只需设定为与CPU数量相同,这一点与Nginx的设定类似。
Memcached使用
安装:
在CentOS下使用下面的命令安装:
sudo yum install memcached
启动:
memcached -m 100 -p 11211 -d -t 2 -c 1024 -P /tmp/memcached.pid
-m 指定使用的内存容量,单位MB,默认64MB。
-p 指定监听的TCP端口,默认11211。
-d 以守护进程模式启动。
-t 指定线程数,默认为4。
-c 最大客户端连接数,默认为1024。
-P 保存PID文件。
关闭:
kill `cat /tmp/memcached.pid`
测试:
使用telnet连接memcached服务。
telnet localhost 11211
存储命令格式:
set foo 0 0 4abcdSTORED<command name> <key> <flags> <exptime> <bytes><data block><command name> set, add, replace等<key> 关键字<flags> 整形参数,存储客户端对键值的额外信息,如值是压缩的,是字符串,或JSON等<exptime> 数据的存活时间,单位为秒,0表示永远<bytes> 存储值的字节数<data block> 存储的数据内容
读取命令格式:
get fooVALUE foo 0 4abcdEND<command name> <key><command name> get, gets。gets比get多返回一个数字,这个数字检查数据有没有发生变化,当key对应的数据改变时,gets多返回的数字也会改变。<key> 关键字返回的数据格式:VALUE <key> <flags> <bytes>
CAS(checked and set):
cas foo 0 0 4 1cdefSTOREDcas <key> <flags> <exptime> <bytes> <version>除最后的<version>外,其他参数与set, add等命令相同,<version>的值需要与gets获取的值相同,否则无法更新。incr, decr可对数字型数据进行原子增减操作。
全局统计信息
statsSTAT pid 10218STAT time 1432611519STAT curr_connections 6STAT total_connections 9STAT connection_structures 7STAT reserved_fds 10STAT cmd_get 5STAT cmd_set 1STAT cmd_flush 0STAT cmd_touch 0STAT get_hits 3STAT get_misses 2STAT delete_misses 0STAT delete_hits 0...END
Memcached集群
Memcached本身不做任何容错处理,对故障节点的处理方式完全取决于客户端。对Memcached的客户端来说,不能使用普通的哈希算法(哈希取模)来寻找目标Server,因为这样在有缓存节点失效时,会导致大面积缓存数据不可用。如下图:
当Server3失效后,客户端需要根据可用Server数量重新计算缓存的目标Server,这时,Key的哈希值为10的数据被指定为由Server1维护,这时原本Server2上可用的缓存也无效了。
一致性哈希算法
一致性哈希算法解决了在动态变化的缓存环境中,定位目标Server的问题,通常的实现可将它想像成一个闭合的环形。如下图:
当有节点失效时,不会影响到正常工作的缓存服务器,只有原本分配到失效节点的缓存会被重新分配到下一个节点。如下图:
微信订阅号:
原文地址:http://blog.gopersist.com/2015/05/28/memcached/
- Web缓存技术-Memcached
- web访问数据库缓存技术 memcached
- Memcached缓存技术
- 缓存分布技术--memcached
- Memcached缓存技术
- memcached缓存技术
- memcached缓存技术简介
- php+memcached缓存技术实例
- java缓存技术memcached实例
- java缓存技术memcached实例
- java缓存技术memcached实例
- java缓存技术memcached实例
- php缓存技术之Memcached
- java缓存技术memcached实例
- Memcached和Redis缓存技术
- Web缓存技术概述
- Web缓存技术概述
- Web缓存技术概述
- 2015acm上海大都会赛 赛后小结
- hiho一下 第四十八周
- poj1065 wooden sticks
- HDU 2023 求平均成绩
- 在嵌入式软件中使用断言的一点想法
- Web缓存技术-Memcached
- Android 记录3 Android滑动菜单特效实现
- Wampserver配置方法
- bzoj 2006
- OC 中的方法重载?
- 独立成分分析http://blog.sina.com.cn/s/blog_73402e3c0101gqy0.html
- $.ajax()方法详解
- [LeetCode] Maximum Depth of Binary Tree
- 解决:生成api文档出现的编码GBK的不可映射字符的问题