Memcached - CAS 命令

17 Mar 2025 | 阅读 2 分钟

CAS 的全称是 Check And SetCompare And Swap。此命令用于在上次获取后数据未更新的情况下设置数据。换句话说,我们可以说 CAS 是一种存储数据的操作,但前提是自您上次读取数据以来,没有人更新过该数据。此命令对于解决更新缓存数据时的竞争条件非常有用。

语法

此处,

key: 这是从 Memcached 存储和检索的数据的键。

flags: flags 是一个 32 位无符号整数,服务器将其与数据(由用户提供)一起存储,并在检索项目时与数据一起返回。

exptime: exptime 是以秒为单位的到期时间。 0 表示没有延迟。 如果超过 30 天,Memcached 会将其用作 UNIX 时间戳以进行过期。

bytes: bytes 是需要存储的数据块中的字节数。 这是存储在 Memcached 中的数据的长度。

Unique_cas_key: 这是一个唯一的键,从 gets 命令获取。

noreply: 这是一个可选参数。 它用于通知服务器不发送任何回复。

value: value 是必须存储的数据。 在使用上述选项执行命令后,需要在新行上传递数据。

返回值

此命令将返回以下值

  • STORED: STORED 表示成功
  • ERROR: 显示保存数据时出错或语法错误。
  • EXISTS: 它表明自上次获取以来,有人修改了 CAS 数据。
  • NOT_FOUND: 它表明 Memcached 服务器中不存在该键。

示例

要在 Memcached 中执行 CAS 命令,我们必须从 Memcached gets 命令获取 CAS 令牌。

让我们看一个例子

Memcached 服务器

Memcached CAS Command

Memcached 客户端

Memcached CAS Command

使用 Java 应用程序的 CAS

假设 Memcached 服务器在主机 127.0.0.1 和端口 11211 上运行。 在这里,我们将使用 gets() 方法在 memcached 服务器中添加数据。

示例

输出

Connection to server successfully
set status:true
Cas token: 3
Prepend to cache:OK
Get from Cache:deep