目录
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);
});
发表回复