Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。 它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。
Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。
特点
- · 协议简单
- · 基于libevent的事件处理
- 内置内存存储方式
- memcached不互相通信的分布式
协议
事件处理
存储方式
通信分布式
# yum install libevent libevent-devel
# yum install memcached
# memcached -d -m 10 -p 12000 -c 256 -u root
memcached 1.5.3
-p, --port=<num> TCP port to listen on (default: 11211) 监听端口 (tcp)
-U, --udp-port=<num> UDP port to listen on (default: 11211, 0 is off) 监听端口 (udp)
-s, --unix-socket=<file> UNIX socket to listen on (disables network support)
-A, --enable-shutdown enable ascii "shutdown" command 允许客户端发送shutdown 关闭memcache进程
-a, --unix-mask=<mask> access mask for UNIX socket, in octal (default: 0700)
-l, --listen=<addr> interface to listen on (default: INADDR_ANY) 监听地址、默认所有
-d, --daemon run as a daemon 以守护进程方式运行
-r, --enable-coredumps maximize core file limit
-u, --user=<user> assume identity of <username> (only when run as root) 仅当root启动时 要指定运行用户
-m, --memory-limit=<num> item memory in megabytes (default: 64 MB) 设置可使用内存大小、默认64M
-M, --disable-evictions return error on memory exhausted instead of evicting
-c, --conn-limit=<num> max simultaneous connections (default: 1024) 允许多少客户端连接
-k, --lock-memory lock down all paged memory
-F, --disable-flush-all disable flush_all command 禁止客户端使用刷新命令
-v, --verbose verbose (print errors/warnings while in event loop)
-vv very verbose (also print client commands/responses)
-vvv extremely verbose (internal state transitions)
-h, --help print this help and exit
-V, --version print version and exit
五种基本 memcached 命令执行最简单的操作。这些命令和操作包括:
set 强制新增
add 新增
replace 替换
get 取值
delete 删除
前三个命令是用于操作存储在 memcached 中的键值对的标准修改命令。它们都非常简单易用,且都使用如下 所示的语法:
command <key> <flags> <expiration time> <bytes>
<value>
参数说明如下:
command set/add/replace
key key 用于查找缓存值
flags 可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息
expiration time 在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
bytes 在缓存中存储的字节数
value 存储的值(始终位于第二行)
get|delete key
查看状态 stats
清理缓存中所有键值 flush_all
追加数据(原数据后) append
追加数据(原数据前) prepend