gpt4 book ai didi

redis - Redis 中的哈希集或排序集?

转载 作者:IT王子 更新时间:2023-10-29 06:04:36 26 4
gpt4 key购买 nike

我的网站有一个用例,我需要以如下形式存储用户特定的日常统计信息

user:1 {field1: value, field2: value, field3: value}

以上表示适用于 n 个用户目前,我已经使用排序集实现了它,其中字段表示排序集的值,值表示分数。我还为这些 key 设置了每日到期时间。

考虑到当用户数量很大时单个 key 创建和过期的开销,考虑到它的优点如下,我正在考虑使用哈希的替代表示,如下所示

Map of field1 <user_id, value> 
Map of field2 <user_id, value>
Map of field3 <user_id, value>
Also a map for expiry <user_id, last_updated_time>

我很困惑是坚持现有的实现还是使用哈希实现用例。有人可以帮忙吗?

最佳答案

如果您不需要按值对字段进行排序,使用排序集可能不是解决您问题的最佳方法。使用散列来存储用户字段值绝对更符合习惯。

hmset user:1 field1 value1 field2 value2 field3 value3

排序集可用于存储到期日期。键是用户 ID,值是到期日期的 unix 时间戳。对于用户:1,到期日期将通过如下命令设置为 1234567890:

zadd expirations 1 1234567890

它允许您使用 ZRANGEBYSCORE 在一次操作中获取当前时间的过期 key 列表

更新

您可以使用简单的 key 来存储您的数据:

SET user:1:field1 value1
SET user:1:field2 value2
SET user:1:field3 value3

它可以让 Redis 处理过期: 过期用户:1:field1 过期用户:1:field2 过期用户:1:field3

用于删除过期 key 的 Redis 算法不会引入任何明显的延迟。使用它肯定比实现你自己的更好。如果您需要更多详细信息,请查看 EXPIRE documentation

如果您想指定到期日期而不是持续时间,您也可以使用 EXPIREAT。

关于redis - Redis 中的哈希集或排序集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25960186/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com