use*_*775 6 regex key-value ttl redis webdis
我需要为每个键保存一些具有不同TTL的值。
例如-对于XXXX,值-val1(到期时间:10),val2(到期时间:20)
选项1: 我的最佳做法是:对每个成员的到期时间使用哈希/集。
不幸的是,containers尽管过去多次要求使用此功能,但Redis的(列表,哈希,集合和排序集合)不支持每个成员的有效期。
选项2: 所以我必须做这样的事情:
SETEX XXXX:0 10 val1
SETEX XXXX:1 20 Val2
现在,我想获取所有尚未过期的值,它们的键以XXXX开头。
所以我尝试了这个:
127.0.0.1:6379> keys XXXX:*
1) "XXXX:0"
2) "XXXX:1"
Run Code Online (Sandbox Code Playgroud)
但是我想获取值,而不是键!
选项3:如何做到这一点,而不是将价值放到密钥中:
SETEX XXXX:val1 10 val1
SETEX XXXX:val2 20 val2
127.0.0.1:6379> keys XXXX:*
1) "XXXX:val1"
2) "XXXX:val2"
Run Code Online (Sandbox Code Playgroud)
这将是我最后的选择。我将不得不采取串后:...
任何想法如何使用更好的方法来实现选项1(替代)或至少选项2?
小智 1
要使用一个命令实现此目的,您可能需要自己处理密钥的过期问题。
假设 XXXX 是一个元素列表,例如将键保存在排序集中,并以过期时间戳作为成员的分数。
ZADD XXXX [current-timestamp + 10] val1
ZADD XXXX [current-timestamp + 20] val2
Run Code Online (Sandbox Code Playgroud)
并像这样获取它们:
ZREVRANGEBYSCORE XXXX +inf [current-timestamp]
Run Code Online (Sandbox Code Playgroud)
但是,您需要定期删除过期的元素:
ZREMRANGEBYSCORE XXXX -inf [current-timestamp]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7488 次 |
| 最近记录: |