memcached实战系列(三)memcached命令使用

memcached命令的使用,在这里我们最好了解一下命令的含义,对命令有一个大致的了解,在了解的基础上进行使用。这里的命名是常用的crud命令的演示。

1.1.1. memcached命令的格式

标准协议:Memcached所有的标准协议包含在对item执行命令过程中,一个item包含两行:

第一行:Key Flags ExpirationTime Bytes

Key:Key 用于查找缓存值

Flags:一个32位的标志值,客户机使用它存储关于键值对的额外信息(譬如用户规定1 json 2 xml )用户自己的业务标记使用场景 比如 我可以设置为1缓存的是网页的热点2缓存的是app的热点。

Expiration time:在缓存中保存键值对的时长(以秒为单位,0表示永远)(服务器挂了数据没了 最多30天时间因为memcached没有提供持久化的功能)

Bytes:在缓存中存储的字节数(与存储的值不对应CLIENT_ERROR bad data chunk)存储的字节数一定要与实际存储值得字节数对应,否则无法存入报错CLIENT_ERROR
bad data chunk

比如存入值3字节则值bytes为3值例如ksf

第二行:Value:存储的值(始终位于第二行)

noreply:可以在命令的第一行后面加入noreply,以避免在处理交互命令的时候,等待服

务端的返回

向Memcached写入值

命令有:set、add、replace、append、prepend、cas

首先进入我们的命令行

cd /usr/shareniu/memcached/bin
./memcached -d -m 10 -u root -l 0.0.0.0 -p 18887-c 256 -P /tmp/memcached.pid

如下图所示:

memcached实战系列(三)memcached命令使用

1.1.2. memcached命令set

set:用于向缓存添加新的键值对,如果键已经存在,则之前的值将被替换(update)

演示:

set user 0 60 3
ksf

1.1.3. memcached命令add

add:仅当缓存中不存在键时,add命令才会向缓存中添加一个键值对,如果缓存中已经存在键,则之前的值将仍然保持,服务器响应NOT_STORED(说白了就是存在不执行命令不存在添加)

演示:

add user 0 0 3
ksf

1.1.4. memcached命令replace

replace:仅当键已经存在时,replace命令才会替换缓存中的键。如果缓存中不存在键,

服务器响应NOT_STORED

演示:

replace user 0 0 3
ksf

1.1.5. memcached命令append

append:是在现有缓存数据后面新增数据。如果key不存在,服务器响应NOT_STORED

演示:

append  user 0 0 3
ksf

1.1.6. memcached命令prepend

prepend:是在现有缓存数据前面新增数据。如果key不存在,服务器响应NOT_STORED

演示:

prepend user 0 0 3
niu

1.1.7. memcached命令cas

cas(Check And Set ):检查和更新,只有从你读取数据后,别人没有更新这

个数据,才能够正确保存。就是版本控制,通常和gets配合使用必须等于当前的版本才能更新小于大于都不行.原子性操作

演示:

gets u1

查询结果

VALUE u1 0 3 4

cas user 0 0 2 10(版本号)

aa

获取数据的命令有:get 、gets

delete user

get用来获取数据,gets获取的是数据+版本号

1.1.8. memcached命令delete

删除数据的命令:delete

演示:

1.1.9. memcached命令 incr/decr

incr/decr命令:如果缓存数据中存储的是数字形式的字符串,则可以使用

incr/decr 对数据进行递增和递减操作,操作后的值不会为负数

演示:

incr  user 10(ok)
incr  user -10(CLIENT_ERROR invalid numeric delta argument)
decr user 10(为0后不在减少)
decr user -10(CLIENT_ERROR invalid numeric delta argument)
上一篇:Web API CSRF保护实现


下一篇:memcached实战系列(五)Memcached: List all keys 查询所有的key