一、Memcached 安装
本人使用的是CentOS 7,安装memcached,
1、首先要先安装libevent库
yum install libevent libevent-deve
2、安装memcached
yum install memcached
3、查看memcachend的安装路径
不同的安装方法,memcached的路径不同,所以最好好先which一下
[root@localhost ~]# which memcached
/usr/bin/memcached
4、查看动帮助文件
/usr/bin/memcached -h
- -d是启动一个守护进程;
- -m是分配给Memcache使用的内存数量,单位是MB;
- -u是运行Memcache的用户;
- -l是监听的服务器IP地址,可以有多个地址;
- -p是设置Memcache监听的端口,,最好是1024以上的端口;
- -c是最大运行的并发连接数,默认是1024;
- -P是设置保存Memcache的pid文件
5、前台运行程序
/usr/bin/memcached -p 11211 -m 64m -vv -u root
不加-u root 参数下会报错
can't run as root without the -u switch
6、作为后台服务程序运行
/usr/bin/memcached -d -m 64M -u root -l 127.0.0.1 -p 11211 -c 256 -P /tmp/memcached.pid
7、安装Telnet远程登录工具
yum install -y telnet
8、链接memcached
telnet 127.0.0.1 11211
链接成功后会出现以下字样
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
set命令
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)
举例:
set name 0 0 3
abc
STORED
输出信息说明:
- STORED:保存成功后输出。
- ERROR:在保存失败后输出。
add命令
add 命令用于将 value(数据值) 存储在指定的 key(键) 中。
如果 add 的 key 已经存在,则不会更新数据(过期的 key 会更新),之前的值将仍然保持相同,并且您将获得响应 NOT_STORED。
add命令基本语法格式
add key flags exptime bytes [noreply]
value
参数与set相同
add name 0 0 3
abc
NOT_STORED
输出信息说明:
- STORED:保存成功后输出。
- NOT_STORED :在保存失败后输出
存储命令 | 描述 | 输出信息说明 |
set | set 命令用于将 value(数据值) 存储在指定的 key(键) 中。 如果set的key已经存在,该命令可以更新该key所对应的原来的数据也就是实现更新的作用 | STORED:保存成功后输出。 ERROR:在保存失败后输出。 |
add | add 命令用于将 value(数据值) 存储在指定的 key(键) 中。 如果 add 的 key 已经存在,则不会更新数据(过期的 key 会更新) 之前的值将仍然保持相同 | STORED:保存成功后输出。 NOT_STORED :在保持失败后输出。 |
replace | replace 命令用于替换已存在的 key(键) 的 value(数据值) 。如果 key 不存在,则替换失败 | STORED:保存成功后输出。 NOT_STORED:执行替换失败后输出。 |
append | append 命令用于向已存在 key(键) 的 value(数据值) 后面追加数据 。 | STORED:保存成功后输出。 NOT_STORED:该键在 Memcached 上不存在。 CLIENT_ERROR:执行错误 |
prepend | prepend 命令用于向已存在 key(键) 的 value(数据值) 前面追加数据。 | STORED:保存成功后输出。 NOT_STORED:该键在 Memcached 上不存在。 CLIENT_ERROR:执行错误。 |
CAS | CAS(Check-And-Set 或 Compare-And-Swap) 命令用于执行一个"检查并设置"的操作 它仅在当前客户端最后一次取值后,该key 对应的值没有被其他客户端修改的情况下,才能够将值写入。 检查是通过cas_token参数进行的, 这个参数是Memcach指定给已经存在的元素的一个唯一的64位值。 | STORED:保存成功后输出。 ERROR:保存出错或语法错误。 EXISTS:在最后一次取值后另外一个用户也 在更新该数据。 NOT_FOUND:Memcached 服务上不存在该键值。 |
Memcached 删除命令
delete命令用于删除已存在的key
delete key [noreply]
参数说明如下:
- key:键值 key-value 结构中的 key,用于查找缓存值。
- noreply(可选): 该参数告知服务器不需要返回数据
- DELETED:删除成功。
- ERROR:语法错误或删除失败。
- NOT_FOUND:key 不存在。
Memcached 查询命令
get 命令获取存储在 key(键) 中的 value(数据值) ,如果 key 不存在,则返回空。
get key
多个key使用空格隔开
get key1 key2 key3
gets 命令获取带有 CAS 令牌存 的 value(数据值) ,如果 key 不存在,则返回空
gets key
多个key使用空格隔开
gets key1 key2 key3
Memcached 自增或自减操作
Memcached incr 与 decr 命令用于对已存在的 key(键) 的数字值进行自增或自减操作。
incr 与 decr 命令操作的数据必须是十进制的32位无符号整数。
如果 key 不存在返回 NOT_FOUND,如果键的值不为数字,则返回 CLIENT_ERROR,其他错误返回 ERROR。
incr 命令的基本语法格式如下:
incr(或decr) key increment_value
key:键值 key-value 结构中的 key,用于查找缓存值。
increment_value: 增加的数值,默认值为1
命令 | 描述 | 输出信息说明 |
incr | 用于对已存在的 key(键) 的数字值进行自增 | NOT_FOUND:key 不存在。 CLIENT_ERROR:自增值不是对象。 ERROR其他错误,如语法错误等。 |
decr | 用于对已存在的 key(键) 的数字值进行自减 | NOT_FOUND:key 不存在。 CLIENT_ERROR:自减值不是对象。 ERROR其他错误,如语法错误等。 |
Memcached 统计命令
命令 | 描述 | 基本语法 |
stats | stats 命令用于返回统计信息例如 PID(进程号)、版本号、连接数等 | stats |
stats items | 用于显示各个 slab 中 item 的数目和存储时长(最后一次访问距离现在的秒数)。 | stats items |
stats slabs | 用于显示各个slab的信息,包括chunk的大小、数目、使用情况等。 | stats slabs |
stats sizes | 用于显示所有item的大小和个数。 该信息返回两列,第一列是 item 的大小,第二列是 item 的个数。 | stats sizes |
stats
STAT pid 1662
STAT uptime 5638
STAT time 1520503741
STAT version 1.4.15
STAT libevent 2.0.21-stable
STAT pointer_size 64
STAT rusage_user 0.083247
STAT rusage_system 0.166495
STAT curr_connections 7
STAT total_connections 16
STAT connection_structures 8
STAT reserved_fds 20
STAT cmd_get 7
STAT cmd_set 15
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 5
STAT get_misses 2
STAT delete_misses 0
STAT delete_hits 0
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 829
STAT bytes_written 820
STAT limit_maxbytes 67108864
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT bytes 294
STAT curr_items 4
STAT total_items 5
STAT expired_unfetched 0
STAT evicted_unfetched 0
STAT evictions 0
STAT reclaimed 0
END
- pid: memcache服务器进程ID
- uptime:服务器已运行秒数
- time:服务器当前Unix时间戳
- version:memcache版本
- pointer_size:操作系统指针大小
- rusage_user:进程累计用户时间
- rusage_system:进程累计系统时间
- curr_connections:当前连接数量
- total_connections:Memcached运行以来连接总数
- connection_structures:Memcached分配的连接结构数量
- cmd_get:get命令请求次数
- cmd_set:set命令请求次数
- cmd_flush:flush命令请求次数
- get_hits:get命令命中次数
- get_misses:get命令未命中次数
- delete_misses:delete命令未命中次数
- delete_hits:delete命令命中次数
- incr_misses:incr命令未命中次数
- incr_hits:incr命令命中次数
- decr_misses:decr命令未命中次数
- decr_hits:decr命令命中次数
- cas_misses:cas命令未命中次数
- cas_hits:cas命令命中次数
- cas_badval:使用擦拭次数
- auth_cmds:认证命令处理的次数
- auth_errors:认证失败数目
- bytes_read:读取总字节数
- bytes_written:发送总字节数
- limit_maxbytes:分配的内存总大小(字节)
- accepting_conns:服务器是否达到过最大连接(0/1)
- listen_disabled_num:失效的监听数
- threads:当前线程数
- conn_yields:连接操作主动放弃数目
- bytes:当前存储占用的字节数
- curr_items:当前存储的数据总数
- total_items:启动以来存储的数据总数
- evictions:LRU释放的对象数目
- reclaimed:已过期的数据条目来存储新数据的数目
stats items 命令用于显示各个 slab 中 item 的数目和存储时长(最后一次访问距离现在的秒数)。
stats items
stats items
STAT items:1:number 4
STAT items:1:age 4180
STAT items:1:evicted 0
STAT items:1:evicted_nonzero 0
STAT items:1:evicted_time 0
STAT items:1:outofmemory 0
STAT items:1:tailrepairs 0
STAT items:1:reclaimed 0
STAT items:1:expired_unfetched 0
STAT items:1:evicted_unfetched 0
END
stats slabs 命令用于显示各个slab的信息,包括chunk的大小、数目、使用情况等。
stats slabs
stats slabs
STAT 1:chunk_size 96
STAT 1:chunks_per_page 10922
STAT 1:total_pages 1
STAT 1:total_chunks 10922
STAT 1:used_chunks 5
STAT 1:free_chunks 10917
STAT 1:free_chunks_end 0
STAT 1:mem_requested 380
STAT 1:get_hits 5
STAT 1:cmd_set 15
STAT 1:delete_hits 0
STAT 1:incr_hits 0
STAT 1:decr_hits 0
STAT 1:cas_hits 0
STAT 1:cas_badval 0
STAT 1:touch_hits 0
STAT active_slabs 1
STAT total_malloced 1048512
END
stats sizes 命令用于显示所有item的大小和个数。
stats sizes
stats sizes
STAT 96 4
END
清除缓存命令
flush_all 命令用于用于清理缓存中的所有 key=>value(键=>值) 对。
该命令提供了一个可选参数 time,用于在制定的时间后执行清理缓存操作。
flush_all [time] [noreply]