如何组合Redis命令';到期日';和';sadd&x27;变成一个命令?

如何组合Redis命令';到期日';和';sadd&x27;变成一个命令?,redis,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" 但是我需要设置密钥my

我需要在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 server的每个请求执行这些命令?

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

事务中的所有命令都被序列化并按顺序执行。在ReIIS事务的执行过程中,另一个客户发出的请求是不可能发生的。这保证了命令作为单个独立操作执行


还可以使用Lua脚本将两个命令绑定在一起:

127.0.0.1:6379> EVAL "redis.call('SADD', KEYS[1], unpack(ARGV)) redis.call('EXPIRE', KEYS[1], 3600)" 1 myset a b c d e
(nil)
127.0.0.1:6379> SMEMBERS myset
1) "c"
2) "d"
3) "a"
4) "b"
5) "e"
127.0.0.1:6379> TTL myset
(integer) 3596
127.0.0.1:6379> EVAL "redis.call('SADD', KEYS[1], unpack(ARGV)) redis.call('EXPIRE', KEYS[1], 3600)" 1 myset a b c d e
(nil)
127.0.0.1:6379> SMEMBERS myset
1) "c"
2) "d"
3) "a"
4) "b"
5) "e"
127.0.0.1:6379> TTL myset
(integer) 3596