gpt4 book ai didi

hash - 用于分析的 Redis key 方案

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

我想使用 Redis 创建分析 - 每个对象的基本计数器、每小时/天/周/月/年和总数

什么 redis 数据结构对此有效,我如何避免对 redis 进行多次调用?

让每个模型都有这组键会更好吗:

哈希 - model:<id>:years => 每年都有一个计数器

哈希 - model:<id>:<year> => 每个月都有一个计数器

哈希 - model:<id>:<year>:<month> => 每天都有一个计数器

哈希 - model:<id>:<year>:<month>:<day> => 每个小时都有一个计数器

如果这个方案是正确的,我将如何在不多次调用 redis 的情况下绘制这些数据的图表?我将不得不在 model:<id>:years 中全年循环并获取月份,然后在月份循环等等?或者我只是从所有键中获取所有字段及其值作为批处理请求,然后在服务器中进行处理?

最佳答案

最好使用 zset为此而不是哈希。 使用timestamp作为分数,您将能够检索特定时间范围内的数据

对于日期范围,您将使用 model:<id>:<year>:<month> ,一个小时的范围(使用 model:<id>:<year>:<month>:<day> )等等...

实际上,如果日期范围大于一个月(例如从 2014 年 1 月 1 日到 2014 年 3 月 20 日),您将不得不检索多个 zset(model:<id>:2014:01model:<id>:2014:02model:<id>:2014:03)并合并结果.

如果你真的想在单个请求中做一个日期范围,你总是可以在 model:<id>:<year> 中存储日期精度数据。 .如果你想处理多年的日期范围,你只需要有一个 zset 例如model:<id>:byDay .

但是,请注意存储历史数据会随着时间的推移增加内存消耗,因此您应该已经考虑过data retention .对于 Redis,您可以使用 EXPIRE在 zset 上或使用 crons 自己做。

关于hash - 用于分析的 Redis key 方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26174150/

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