mae*_*sto 9 timestamp time-series nosql 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>
Run Code Online (Sandbox Code Playgroud)
但是我遇到了一个问题,成员不重复,而我的值对于不同的时间戳可能是相同的.知道如何处理这个问题吗?另一种数据类型更好吗?
Did*_*zia 16
解决此问题的一个简单技巧是连接时间戳和值.
而不是存储:
ZADD timeserie 1392141527245 10
Run Code Online (Sandbox Code Playgroud)
你可以存储:
ZADD timeserie 1392141527245 10:1392141527245
Run Code Online (Sandbox Code Playgroud)
直到编码/解析值的应用程序:timestamp格式.
排序集实现为跳过列表加上哈希表,因此它们在内存中不是特别紧凑.如果您的数据量很大,那么另一种解决方案可以为您提供更好的服务.
有些人使用普通字符串来编码时间序列,这比排序集更紧凑.你可以在这里找到一个例子:https://github.com/antirez/redis-timeseries