redis - 如何将 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 事务的执行过程中服务于另一个客户端发出的请求永远不会发生。这保证了命令作为单个隔离操作执行。
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>
推荐阅读
- javascript - console.log 总是在 for 循环中打印最高索引
- windows - 如何以完整路径运行 git 命令?
- azure - ClaimsPrincipal 的哪个属性可用于唯一标识 MVC 控制器中的用户
- cron - 如何在ubuntu上使用crontab每5分钟安排一次java项目的课程?
- machine-learning - 如何从加速度计数据的滑动窗口移动到手势识别任务中的特征向量?
- python - 获取总和最大的索引 Python 3
- docker - 从网络访问 Docker Gitlab 实例
- java - 如何从 BigQuery 检索数据并将数据插入 mySQL?
- git - 在多个 git 存储库上“分发”(复制、提交、推送)文件的简单方法?
- cloud-foundry - 从另一台机器访问 PCF 应用程序