83-高性能,分布式缓存memcache简析
2016-10-29 20:14
295 查看
一. memcached简介
memcached is a high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.
(由 LiveJournal旗下的Danga Interactive研发)
#高性能,分布式缓存系统
缓存服务器:
缓存:cache,无持久存储功能;
bypass缓存 # 旁挂式缓存
k/v cache,仅支持存储流式化数据;
特性:
k/v cache:仅可序列化数据;存储项:k/v (key:value)
智能性一半依赖于客户端(调用memcached的API开发程序),一半依赖于服务端;
分布式缓存:互不通信的分布式集群;
分布式系统请求路由方法:取模法(对机器数量取模来决定发往哪台机器),
一致性哈希算法(顺时针哈希环);
算法复杂度:O(1)
清理过期缓存项:
缓存耗尽:LRU
缓存项过期:惰性清理机制
#即会定期检查缓存,当缓存失效时候并不做清理,而是有新缓存写入时
候,直接覆盖原有的旧缓存内容
二. 安装配置:
由CentOS 7 base仓库直接提供:
监听的端口:
11211/tcp, 11211/udp
主程序:/usr/bin/memcached
配置文件:/etc/sysconfig/memcached
Unit File:memcached.service
管理工具:memcached-tool
协议格式:memcached协议
文本格式
二进制格式
三.memcache 命令详解
详细协议帮助 : /usr/share/doc/memcached-1.4.15/protocol.txt
命令:
统计类:stats, stats items, stats slabs, stats sizes
存储类:set, add, replace, append, prepend
命令格式:<command name> <key> <flags> <exptime> <bytes>
额外信息 过期时间 大小
<cas unique> #回车后才能输入值
key key 用于查找缓存值
flags 可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息
# 默认用1 即可
expiration time 在缓存中保存键值对的时间长度(以秒为单位,0 表示永
远)
bytes 在缓存中存储的字节点
value 存储的值(始终位于第二行)
检索类:get, delete, incr/decr
清空:flush_all
示例:
telnet> add KEY <flags> <expiretime> <bytes> \r
telnet> VALUE参数 用法
memcached程序的常用选项:
-m <num>:Use <num> MB memory max to use for object storage; the
default is 64 megabytes.
-c <num>:Use <num> max simultaneous connections; the default is 1024.
-u <username>:以指定的用户身份来运行进程;
-l <ip_addr>:监听的IP地址,默认为本机所有地址;
-p <num>:监听的TCP端口, the default is port 11211.
-U <num>:Listen on UDP port <num>, the default is port 11211, 0 is off.
-M:内存耗尽时,不执行LRU清理缓存,而是拒绝存入新的缓存项,直到有多余的空
间可用时为止;
-f <factor>:增长因子(内存分块的大小增长倍数);默认是1.25;
-t <threads>:启动的用于响应用户请求的线程数;
memcached默认没有认证机制,可借用于SASL进行认证;
SASL:Simple Authentication Secure Layer
三. API:
php-pecl-memcache
php-pecl-memcached
python-memcached
libmemcached
#此工具包中包含多个memcache的命令行管理工具
libmemcached-devel
命令行工具:
memcached-tool SERVER:PORT COMMAND
-------------------------------------------------
[root@localhost ~]# rpm -ql libmemcached
/usr/bin/memaslap
/usr/bin/memcapable
/usr/bin/memcat
/usr/bin/memcp
/usr/bin/memdump
/usr/bin/memerror
/usr/bin/memexist
/usr/bin/memflush
/usr/bin/memparse
/usr/bin/memping
/usr/bin/memrm
/usr/bin/memslap
/usr/bin/memstat
/usr/bin/memtouch
--------------------------------------------------
四. 利用 telnet 管理memcache 示例
1. yum install telnet
--> telnet localhost 11211
stats:
五. nginx 对memcache 的支持
所需模块: ngx_http_memcached_module
Syntax: memcached_bind address [transparent] | off;
Default: —
Context: http, server, location
#用于绑定 memcache 服务器
Syntax: memcached_pass address;
Default: —
Context: location, if in location
#绑定memcache 集群
eg:
server {
location / {
set $memcached_key "$uri?$args";
#将指定的key 放入memcache 生成缓存;
memcached_pass host:11211;
error_page 404 502 504 = @fallback;
}
location @fallback {
proxy_pass http://backend;
}
}
============================================================
memcached is a high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.
(由 LiveJournal旗下的Danga Interactive研发)
#高性能,分布式缓存系统
缓存服务器:
缓存:cache,无持久存储功能;
bypass缓存 # 旁挂式缓存
k/v cache,仅支持存储流式化数据;
特性:
k/v cache:仅可序列化数据;存储项:k/v (key:value)
智能性一半依赖于客户端(调用memcached的API开发程序),一半依赖于服务端;
分布式缓存:互不通信的分布式集群;
分布式系统请求路由方法:取模法(对机器数量取模来决定发往哪台机器),
一致性哈希算法(顺时针哈希环);
算法复杂度:O(1)
清理过期缓存项:
缓存耗尽:LRU
缓存项过期:惰性清理机制
#即会定期检查缓存,当缓存失效时候并不做清理,而是有新缓存写入时
候,直接覆盖原有的旧缓存内容
二. 安装配置:
由CentOS 7 base仓库直接提供:
监听的端口:
11211/tcp, 11211/udp
主程序:/usr/bin/memcached
配置文件:/etc/sysconfig/memcached
Unit File:memcached.service
管理工具:memcached-tool
协议格式:memcached协议
文本格式
二进制格式
三.memcache 命令详解
详细协议帮助 : /usr/share/doc/memcached-1.4.15/protocol.txt
命令:
统计类:stats, stats items, stats slabs, stats sizes
存储类:set, add, replace, append, prepend
命令格式:<command name> <key> <flags> <exptime> <bytes>
额外信息 过期时间 大小
<cas unique> #回车后才能输入值
key key 用于查找缓存值
flags 可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息
# 默认用1 即可
expiration time 在缓存中保存键值对的时间长度(以秒为单位,0 表示永
远)
bytes 在缓存中存储的字节点
value 存储的值(始终位于第二行)
检索类:get, delete, incr/decr
清空:flush_all
示例:
telnet> add KEY <flags> <expiretime> <bytes> \r
telnet> VALUE参数 用法
memcached程序的常用选项:
-m <num>:Use <num> MB memory max to use for object storage; the
default is 64 megabytes.
-c <num>:Use <num> max simultaneous connections; the default is 1024.
-u <username>:以指定的用户身份来运行进程;
-l <ip_addr>:监听的IP地址,默认为本机所有地址;
-p <num>:监听的TCP端口, the default is port 11211.
-U <num>:Listen on UDP port <num>, the default is port 11211, 0 is off.
-M:内存耗尽时,不执行LRU清理缓存,而是拒绝存入新的缓存项,直到有多余的空
间可用时为止;
-f <factor>:增长因子(内存分块的大小增长倍数);默认是1.25;
-t <threads>:启动的用于响应用户请求的线程数;
memcached默认没有认证机制,可借用于SASL进行认证;
SASL:Simple Authentication Secure Layer
三. API:
php-pecl-memcache
php-pecl-memcached
python-memcached
libmemcached
#此工具包中包含多个memcache的命令行管理工具
libmemcached-devel
命令行工具:
memcached-tool SERVER:PORT COMMAND
-------------------------------------------------
[root@localhost ~]# rpm -ql libmemcached
/usr/bin/memaslap
/usr/bin/memcapable
/usr/bin/memcat
/usr/bin/memcp
/usr/bin/memdump
/usr/bin/memerror
/usr/bin/memexist
/usr/bin/memflush
/usr/bin/memparse
/usr/bin/memping
/usr/bin/memrm
/usr/bin/memslap
/usr/bin/memstat
/usr/bin/memtouch
--------------------------------------------------
四. 利用 telnet 管理memcache 示例
1. yum install telnet
--> telnet localhost 11211
stats:
五. nginx 对memcache 的支持
所需模块: ngx_http_memcached_module
Syntax: memcached_bind address [transparent] | off;
Default: —
Context: http, server, location
#用于绑定 memcache 服务器
Syntax: memcached_pass address;
Default: —
Context: location, if in location
#绑定memcache 集群
eg:
server {
location / {
set $memcached_key "$uri?$args";
#将指定的key 放入memcache 生成缓存;
memcached_pass host:11211;
error_page 404 502 504 = @fallback;
}
location @fallback {
proxy_pass http://backend;
}
}
============================================================
相关文章推荐
- 分布式缓存集群方案特性使用场景(Memcache/Redis(Twemproxy/Codis/Redis-cluster))优缺点对比及选型
- memcache_engine + memcachedb = 高性能分布式内存数据库
- asp.net 结合 memcache 进行分布式缓存的开发,结合mysql数据库
- 分布式缓存Memcache和Redis
- php5.4之分布式缓存memcache(windows7下安装配置)
- 高性能服务器架构思路(五)——分布式缓存
- memcache_engine + memcachedb = 高性能分布式内存数据库
- memcache的分布式缓存问题
- 【转】系统缓存全解析二:动态缓存(4)-第三方分布式缓存解决方案 Memcache(1)
- Java 高性能缓存设计思想(Memcache)
- [转]memcache_engine + memcachedb = 高性能分布式内存数据库
- memcache_engine + memcachedb = 高性能分布式内存数据库
- memcache的分布式缓存问题
- MemCache 分布式缓存
- 【转】系统缓存全解析二:动态缓存(4)-第三方分布式缓存解决方案 Memcache(2)
- Memcache分布式缓存应用实例
- 分布式缓存集群方案特性使用场景(Memcache/Redis(Twemproxy/Codis/Redis-cluster))优缺点对比及选型
- 【Apache+Tomcat+Session+Memcache 高性能群集搭建】
- memcache的分布式缓存问题
- Apache+Tomcat+Session+Memcache 高性能群集搭建