gpt4 book ai didi

php - Redis 时间序列数据和时区

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

我正在尝试实现一个时间序列数据库,以使用 redis(和 php,但我认为该语言不相关)来存储简单的计数器。所以我实现了我的 redis 键如下(简化):

someprefix:YYYY-MM-DD:somecounter

现在,当我想获取特定时间间隔内的一系列数据时,我只需获取特定范围内的所有键即可,一切正常。 (YYYY-MM-DD 是 UTC 日期)

现在我想实现根据某个时区 X 获取数据的能力。我的问题是:有没有什么方法可以将这个关键模式用于任何程度的准确性?

我猜不会,因为根本没有时间信息,所以我还必须至少向 key 添加小时和分钟,以便时区转换正常工作。我也可能应该以更小的时间间隔保存信息,否则在转换时区时,在某些情况下,当时区差异不应超过 13 小时时,我最终会得到不同日期的所有数据,因此给我错误的结果,我是对的吗?

只使用 unix 时间戳而不是 redis 键上的格式化日期会更合适吗?例如,如果我稍后决定以更小的精度存储数据,比如每小时或每 10 分钟,什么是更灵活的 key 格式?

希望我能够正确解释我的问题,但请随时要求任何澄清。

谢谢

最佳答案

当您必须处理时区时,最好使用纪元(UNIX 时间戳)。

我建议使用时间戳来构建 key 。例如,事件发生在时间戳 1409800502515(星期四,2014 年 9 月 4 日 03:15:02 GMT),您可以像这样将其存储在小时级别或天级别

Hour bucket = 1409800502515 - (1409800502515 % (60 * 60)) = 1409800500000
Day bucket = 1409800502515 - (1409800502515 % (24 * 60 * 60)) = 1409800464000

和帧键一样

someprefix:1409800500000:somecounter OR
someprefix:1409800464000:somecounter

例如计算每小时的页面浏览量,找到合适的小时桶并递增计数器

mypage.html:1409800464000:page_views INCR 10

关于php - Redis 时间序列数据和时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25655346/

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