如何将 Redis 命令“expire”和“sadd”组合成一个命令?

Alb*_*ert 8 redis

我需要在 Redis 中创建一个集合:

redis> SADD myset "Hello"
(integer) 1
redis> SADD myset "World"
(integer) 1
redis> SADD myset "World"
(integer) 0
redis> SMEMBERS myset
1) "World"
2) "Hello"
Run Code Online (Sandbox Code Playgroud)

但我需要为密钥设置过期时间myset。

换句话说,我需要一种命令expire sadd myset...(例如用于字符串值的 SETEX)。

有没有办法让 Redis 服务器每次请求都执行这些命令?

Ers*_*soy 6

没有内置命令可以执行此操作。你可以做的是;使用交易。正如文档中所述;

事务中的所有命令都被序列化并按顺序执行。绝不会发生在 Redis 事务执行过程中处理另一个客户端发出的请求的情况。这保证了命令作为单个独立操作执行。

127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> SADD mynewset a b c d e f g
QUEUED
127.0.0.1:6379> SADD mynewset f g h j k l
QUEUED
127.0.0.1:6379> EXPIRE mynewset 86400
QUEUED
127.0.0.1:6379> EXEC
1) (integer) 7
2) (integer) 4
3) (integer) 1
127.0.0.1:6379> TTL mynewset
(integer) 86394
127.0.0.1:6379>
Run Code Online (Sandbox Code Playgroud)