一、介绍
Memcached 是一款自由开源的高性能分布式内存对象缓存系统。它基于内存的 Key-Value 存储模型,适合存放字符串或序列化后的对象。
引入它的核心目的很明确:通过缓存数据库查询结果,减少直接访问数据库的次数,从而提升动态 Web 应用的速度和可扩展性。
二、存储操作
写入数据是基础,但不同场景下需要选择不同的命令,否则可能引发意外覆盖或失败。
Set 最通用的写入命令。如果 Key 已存在,会更新旧值;不存在则新建。
set key flags exptime bytes [noreply] value
成功返回 STORED,失败返回 ERROR。
Add 仅当 Key 不存在时才写入。如果 Key 已存在(包括未过期),操作会被拒绝,原值保持不变。
add key flags exptime bytes [noreply] value
成功返回 STORED,冲突时返回 NOT_STORED。
Replace 与 Add 相反,仅当 Key 已存在时才执行替换。若 Key 不存在,操作失败。
replace key flags exptime bytes [noreply] value
成功返回 STORED,Key 不存在时返回 NOT_STORED。
Append / Prepend 用于在现有值的末尾追加或开头插入数据。注意这要求 Key 必须已存在。
append key flags exptime appendBytes [noreply] value
prepend key flags exptime bytes [noreply] value
成功返回 STORED,Key 不存在时返回 NOT_STORED。
CAS (Check-And-Set)
这是实现乐观锁的关键机制。只有当当前客户端最后一次取值后,该 Key 未被其他客户端修改过,才能写入新值。通过 cas_token(由 gets 获取)进行校验。
cas key flags exptime bytes unique_cas_token [noreply] value
成功返回 STORED,校验失败(并发修改)返回 EXISTS,Key 不存在返回 NOT_FOUND。
三、检索与修改
Get / Gets
get 用于获取 Value;gets 除了返回 Value 还会附带 CAS Token,配合 CAS 写入使用。
get key1 [key2 ...]
gets key1 [key2 ...]
成功返回 VALUE key flags bytes value END,不存在则无输出。
Delete 删除指定的 Key。
delete key [noreply]
成功返回 DELETED,Key 不存在返回 NOT_FOUND。
Incr / Decr 对数值型 Key 进行自增或自减。注意 Memcached 内部处理的是十进制 32 位无符号整数。
incr key increment_value
decr key decrement_value
成功返回新值,Key 不存在返回 ,非数字类型返回 。

