memcached的使用

Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。Memcached简洁而强大。它的简洁设计便于快速开发,减轻开发难度,解决了大数据量缓存的很多问题。它的API兼容大部分流行的开发语言。
本质上,它是一个简洁的key-value存储系统。

安装

yum install libevent libevent-deve     
yum -y install memcached

启动

启动分前台启动和后台启动

1.前台启动

[root@memcached ~]# /usr/bin/memcached -p 11211 -m 64m -vv
can't run as root without the -u switch
[root@memcached ~]# /usr/bin/memcached -p 11211 -m 64m -vv -u root
slab class   1: chunk size        96 perslab   10922
slab class   2: chunk size       120 perslab    8738
slab class   3: chunk size       152 perslab    6898
slab class   4: chunk size       192 perslab    5461
slab class   5: chunk size       240 perslab    4369
slab class   6: chunk size       304 perslab    3449
slab class   7: chunk size       384 perslab    2730
……
<30 new auto-negotiating client connection
30: Client using the ascii protocol

2.后台启动

[root@memcached ~]# /usr/bin/memcached -d -m 64M -u root -l 10.173.32.83 -p 11211 -c 256 -P /tmp/memcached.pid

启动选项:

  • -d是启动一个守护进程;
  • -m是分配给Memcache使用的内存数量,单位是MB;
  • -u是运行Memcache的用户;
  • -l是监听的服务器IP地址,可以有多个地址;
  • -p是设置Memcache监听的端口,,最好是1024以上的端口;
  • -c是最大运行的并发连接数,默认是1024;
  • -P是设置保存Memcache的pid文件。

连接

➜  ~ telnet 10.173.32.83 11211
Trying 10.173.32.83...
Connected to 10.173.32.83.
Escape character is '^]'.

Memcached 的存储命令

Memcached set 命令

Memcached set 命令用于将 value(数据值) 存储在指定的 key(键) 中。
如果set的key已经存在,该命令可以更新该key所对应的原来的数据,也就是实现更新的作用。
语法:
set 命令的基本语法格式如下:

set key flags exptime bytes [noreply] 
value 

参数说明如下:

  • key:键值 key-value 结构中的 key,用于查找缓存值。
  • flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 。
  • exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
  • bytes:在缓存中存储的字节数
  • noreply(可选): 该参数告知服务器不需要返回数据
  • value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value)

例如

➜  ~ telnet 10.173.32.83 11211
Trying 10.173.32.83...
Connected to 10.173.32.83.
Escape character is '^]'.
set foo 0 900 9 # 存数据
memcached
STORED

get foo # 获取数据
VALUE foo 0 9
memcached
END

其中

key → foo
flag → 0
exptime → 900 (以秒为单位)
bytes → 9 (数据存储的字节数)
value → memcached

输出信息

输出信息说明:

  • STORED:保存成功后输出。
  • ERROR:在保持失败后输出。

Memcached add 命令

Memcached add 命令用于将 value(数据值) 存储在指定的 key(键) 中。
如果 add 的 key 已经存在,则不会更新数据(过期的 key 会更新),之前的值将仍然保持相同,并且您将获得响应 NOT_STORED。

语法:
add 命令的基本语法格式如下:
add key flags exptime bytes [noreply]
value

例如

add foo 0 900 9
memcached
STORED
get foo
VALUE foo 0 9
memcached
END
add foo 0 900 9
memcached
NOT_STORED

Memcached replace 命令

Memcached replace 命令用于替换已存在的 key(键) 的 value(数据值)。
如果 key 不存在,则替换失败,并且您将获得响应 NOT_STORED。
语法:
replace 命令的基本语法格式如下:

replace key flags exptime bytes [noreply]
value

例如:

add mkey 0 900 10
data_value
STORED
get mkey
VALUE mkey 0 10
data_value
END
replace mkey 0 900 16
some_other_value
STORED
get mkey
VALUE mkey 0 16
some_other_value
END

输出信息说明:

  • STORED:保存成功后输出。
  • NOT_STORED:执行替换失败后输出。

Memcached append 命令

Memcached append 命令用于向已存在 key(键) 的 value(数据值) 后面追加数据 。
语法:
append 命令的基本语法格式如下:

append key flags exptime bytes [noreply]
value

例如

set runoob 0 900 9
memcached
STORED
get runoob
VALUE runoob 0 9
memcached
END
append runoob 0 900 5
redis
STORED
get runoob
VALUE runoob 0 14
memcachedredis
END

Memcached prepend 命令

Memcached prepend 命令用于向已存在 key(键) 的 value(数据值) 前面追加数据 。
语法:
prepend 命令的基本语法格式如下:

prepend key flags exptime bytes [noreply]
value

例如

set runoob 0 900 9
memcached
STORED
get runoob
VALUE runoob 0 9
memcached
END
prepend runoob 0 900 5
redis
STORED
get runoob
VALUE runoob 0 14
redismemcached
ENDSTORED