将时间序列存储在Redis中

我需要将一些时间序列数据存储到Redis中。我有unix时间戳,并且我需要关联一个值(时间戳<->值)

我尝试将时间戳记作为得分(以便我可以在时间戳记上进行zrange)并将值作为成员的排序集。

127.0.0.1:6379> ZADD timeserie 1392141527245 10 1392141527275 12 1392141527100 10

(integer) 2

127.0.0.1:6379> zscan timeserie 0

1) "0"

2) 1) "10"

2) "1392141527245"

3) "12"

4) "1392141527275"

127.0.0.1:6379>

但是我遇到了一个问题,成员没有重复,而对于不同的时间戳,我的值可以相同。知道如何处理吗?其他数据类型更好吗?

回答:

解决此问题的一个简单技巧是将时间戳记和值连接起来。

而不是存储:

ZADD timeserie 1392141527245 10

您可以存储:

ZADD timeserie 1392141527245 10:1392141527245

由应用程序来编码/解析value:timestamp格式。

排序集实现为跳过列表和哈希表,因此它们在内存中并不是特别紧凑。如果您的数据量很大,那么另一种解决方案将为您提供更好的服务。

有些人使用普通的字符串来编码时间序列,这比排序集更紧凑。您可以在此处找到示例:https://github.com/antirez/redis-

timeseries

以上是 将时间序列存储在Redis中 的全部内容, 来源链接: utcz.com/qa/423655.html

回到顶部