redis 正在缓存更新时间序列数据

ujv3wf0j  于 2022-10-31  发布在  Redis
关注(0)|答案(2)|浏览(181)

我正在尝试使用redis缓存270只股票的时间序列数据。每隔2或3秒,我就会得到一组刚刚发生的股票变化(交易)。我想把这些数据保存在redis中,所以我正在考虑最好的(也是最有效的)方法来做到这一点。
首先,我考虑在redis中有270个列表,每个列表都是可以更新的股票之一,在任何更新时,我都将对象添加到相应的列表中。这有两个主要问题,假设其中一个更新有10个不同的股票刚刚发生了变化,这意味着我必须与redis通信10次。另一个问题是检索,如果我想得到所有股票的数据,那我就得和Redis沟通270次。
另一种方法是只有一个哈希值,它Map到一个具有270个键的JSON对象,对象中的每个值都是一个更新数组。
我目前倾向于第二种方法,但我想知道是否有其他的东西,我可以做的,可能比这些方法更好?

gzszwxb4

gzszwxb41#

@ninesalt你可以使用Redis管道来发送批处理或命令,以提高速度。我以前(在开发中)用过它来处理超过10k的命令队列。
您还应该看看RedisTimeSeries,它可以使查询速度更快,它针对您描述的用例进行了优化,并提供了几个聚合,您可能会发现这些聚合也很有帮助。

42fyovps

42fyovps2#

这取决于qps(每秒查询次数)。
如果它非常高,第二个解决方案就有问题了,它不能扩展;多个服务器将连续查询同一个键(因为redis的单线程)。也许你可以尝试定时器任务,它定期将数据拉到本地缓存。

相关问题