Memcached入门

一、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:执行错误
prependprepend 命令用于向已存在 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 统计命令

命令描述基本语法
statsstats 命令用于返回统计信息例如 PID(进程号)、版本号、连接数等stats
stats items用于显示各个 slab 中 item 的数目和存储时长(最后一次访问距离现在的秒数)。stats items

stats slabs

用于显示各个slab的信息,包括chunk的大小、数目、使用情况等。

stats slabs
stats sizes用于显示所有item的大小和个数。
该信息返回两列,第一列是 item 的大小,第二列是 item 的个数。

stats sizes

stats 命令用于返回统计信息例如 PID(进程号)、版本号、连接数等
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]




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值