目录

  1. add 命令简介
  2. add 命令的语法
  3. add 命令的参数说明
  4. 使用 Telnet 进行 add 操作
  5. 不同编程语言的 add 示例
  6. 参考资料

1. add 命令简介

add 命令用于存储一个新键值对,但 仅当键(key)不存在 时才会成功。如果键已存在,则 add 命令不会覆盖旧值,并返回错误。

set 命令的区别:

  • set 始终存储 数据(如果键已存在,则覆盖)。
  • add 仅当键不存在 时存储数据(如果键已存在,则失败)。

2. add 命令的语法

add <key> <flags> <exptime> <bytes> [noreply]
<data>

  • <key>:存储的键(Key),最长 250 个字符。
  • <flags>:用户自定义标志(通常设为 0)。
  • <exptime>:过期时间(秒),0 代表永不过期。
  • <bytes>:数据的字节大小。
  • [noreply](可选):如果指定,则服务器不会返回响应。
  • <data>:实际存储的值(必须与 <bytes> 指定的大小匹配)。

3. add 命令的参数说明

参数说明示例
<key>存储数据的键session:abc123
<flags>自定义标志(通常为 0)0
<exptime>过期时间(秒),0 代表永不过期600(10 分钟)
<bytes>数据的字节大小13(”Initial Value” 的长度)
<data>具体存储的数据"Initial Value"
[noreply]可选,不返回响应noreply

4. 使用 Telnet 进行 add 操作

4.1 连接 Memcached

telnet 127.0.0.1 11211

4.2 添加新键

add session:abc123 0 600 13
Initial Value

4.3 获取数据

get session:abc123

返回结果:

VALUE session:abc123 0 13
Initial Value
END

4.4 再次尝试 add(失败)

add session:abc123 0 600 14
New Attempt

返回结果:

NOT_STORED


5. 不同编程语言的 add 示例

5.1 PHP add 示例

<?php
$memcached = new Memcached();
$memcached->addServer("127.0.0.1", 11211);

// 添加数据(10 分钟过期)
if ($memcached->add("session:abc123", "Initial Value", 600)) {
    echo "Value added successfully";
} else {
    echo "Key already exists";
}

// 获取数据
echo $memcached->get("session:abc123");
?>


5.2 Python add 示例

from pymemcache.client import base

client = base.Client(('127.0.0.1', 11211))

# 添加数据(10 分钟过期)
result = client.add('session:abc123', 'Initial Value', expire=600)

if result:
    print("Value added successfully")
else:
    print("Key already exists")

# 获取数据
print(client.get('session:abc123').decode('utf-8'))


5.3 Java add 示例

import net.spy.memcached.MemcachedClient;
import java.io.IOException;
import java.net.InetSocketAddress;

public class MemcachedTest {
    public static void main(String[] args) throws IOException {
        MemcachedClient client = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));

        // 添加数据(10 分钟过期)
        boolean success = client.add("session:abc123", 600, "Initial Value").get();

        if (success) {
            System.out.println("Value added successfully");
        } else {
            System.out.println("Key already exists");
        }

        // 获取数据
        System.out.println(client.get("session:abc123"));

        client.shutdown();
    }
}


5.4 Node.js add 示例

const Memcached = require('memcached');
const memcached = new Memcached("127.0.0.1:11211");

// 添加数据(10 分钟过期)
memcached.add("session:abc123", "Initial Value", 600, function(err, result) {
    if (err) {
        console.error(err);
    } else {
        console.log(result ? "Value added successfully" : "Key already exists");
    }
});

// 获取数据
memcached.get("session:abc123", function(err, data) {
    if (err) console.error(err);
    console.log(data);
});


6. 参考资料