redis 中如何对 hash 中的某一个 key 设置过期时间

发布于 2022-09-12 23:58:09 字数 1646 浏览 14 评论 0

问题参考

How to “EXPIRE” the “HSET” child key in redis?

需求:希望对 hash 中 那些超过一个月的 key 设置过期

问题2: 在Stack Overflow的其中一个回答中提到:

{hash_top_key}child_key_1 -> some_value
{hash_top_key}child_key_2 -> some_value
...
{hash_top_key}child_key_n -> some_value
We are using the {} notation on purpose. This allows all those keys to fall in the same hash slot. You can read more about it here: https://redis.io/topics/clust...

This allows all those keys to fall in the same hash slot.” 这句话怎么理解?

按照我的理解,如果假设 Redis 集群中存在 3 台机器, 16383 个哈希槽分到 3 个机器上,对于 {hash_top_key}child_key_1{hash_top_key}child_key_2{hash_top_key}child_key_n 分别计算这个 key 对应的 slot,计算的方式是
slot=crc16(key)&16363,为什么说每一个 key 会落在相同的 hash slot 上?


补充问题内容:

关于 hash 、set等集合数据结构设置 内部元素过期的讨论 有一个 issues
Possibility of Hash/Set/List fields expiration #242

其中有一个回答:

Hi, this will not be implemented by original design:

No nested types in keys.
No complex features in single fields of aggregate data types.
The reasoning is much more complex and is a lot biased by personal feelings, preference and sensibility so there is no objective way I can show you this is better ;)

他说的意思不是很理解

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

拥有 2022-09-19 23:58:09

是对 {hash_top_key} 做插槽计算

the gist is that if there is a substring between {} brackets in a key, only what is inside the string is hashed.

翻译过来就是:如果 key 里有 {子串},只对 {} 里的内容(子串)做 hash。

image.png

乱了心跳 2022-09-19 23:58:09

使用 Redisson 客户端的话,可以 用 RMapCache 这个数据结构

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文