Memcached replace 命令用于替换已存在的 key(键) 的 value(数据值)。
如果 key 不存在,则替换失败,并且您将获得响应 NOT_STORED。
语法:
replace 命令的基本语法格式如下:
replace key flags exptime bytes [noreply] value
参数说明如下:
- key:键值 key-value 结构中的 key,用于查找缓存值。
- flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 。
- exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
- bytes:在缓存中存储的字节数
- noreply(可选): 该参数告知服务器不需要返回数据
- value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value)
实例
以下实例中我们设置:
- key → mykey
- flag → 0
- exptime → 900 (以秒为单位)
- bytes → 10 (数据存储的字节数)
- value → data_value
以下实例中我们使用的键位 'mykey' 并存储对应的值 data_value。执行后我们替换相同的 key 的值为 'some_other_value'。
add mykey 0 900 10
data_value
STORED
get mykey
VALUE mykey 0 10
data_value
END
replace mykey 0 900 16
some_other_value
get mykey
VALUE mykey 0 16
some_other_value
END
输出
如果数据添加成功,则输出:
STORED
输出信息说明:
- STORED:保存成功后输出。
- NOT_STORED:执行替换失败后输出。
memcache 中 add 、 set 、replace 的区别:
用过 memcache 的人都有一个疑惑,那就是 memcache 中为什么会有一个 add 方法、一个 set 方法、一个 replace 呢,这几个方法又有着什么样的区别呢,下边我们来分析下这几个方法的不同之处:
- memcache::add 方法:add 方法用于向 memcache 服务器添加一个要缓存的数据。
- memcache::set 方法:set 方法用于设置一个指定 key 的缓存内容,set 方法是 add 方法和 replace 方法的集合体。
- mmecache::replace 方法: replace 方法用于替换一个指定 key 的缓存内容,如果 key 不存在则返回 false。
方法 | 当key存在 | 当key不存在 |
add | false | true |
replace | 替换(true) | false |
set | 替换(true) | true |