Nosql 在redis中存储时间序列

Nosql 在redis中存储时间序列,nosql,redis,timestamp,time-series,Nosql,Redis,Timestamp,Time Series,我需要将一些timeseries数据存储到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"

我需要将一些timeseries数据存储到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>
但我遇到了一个问题,成员是非重复的,而我的值对于不同的时间戳可能是相同的。
你知道怎么做吗?另一种数据类型更好吗?

它是一个排序的集,因此确实不能重复该值。Redis可能不是适合您使用的最佳工具,请尝试使用专门的数据库,如

解决此问题的简单方法是将时间戳和值连接起来

而不是存储:

ZADD timeserie 1392141527245 10
您可以存储:

ZADD timeserie 1392141527245 10:1392141527245
由应用程序来编码/解析值:timestamp format

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


有些人使用普通字符串来编码时间序列,这比排序集要紧凑得多。您可以在这里找到一个示例:

这正是我使用的解决方案。非常有用。谢谢您无法使用此解决方案增加值。