首页 > 解决方案 > 如何将 Redis 命令 'expire' 和 'sadd' 组合成一个命令?

问题描述

我需要在 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"

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

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

有没有办法在对 Redis 服务器的每个请求中执行这些命令?

标签: redis

解决方案


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

事务中的所有命令都被序列化并按顺序执行。在 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>

推荐阅读