我正在尝试使用Redis缓存270只股票的时间序列数据。每隔2或3秒,我就会收到一系列刚刚发生的库存变化(交易)。我想将这些数据保存在Redis中,所以我目前正在尝试考虑最佳的方法。
首先,我考虑在Redis中有270个列表,其中每个列表都是可以更新的股票之一,并且在进行任何更新时,我将该对象添加到相应的列表中。这有两个主要问题,可以说更新之一有10个不同的刚刚改变的股票,这意味着我必须与Redis交流10次。另一个问题是检索,如果要获取所有股票的数据,则必须与redis进行270次通信。
另一种方法是只具有一个散列,该散列映射到具有270个键的JSON对象,并且该对象中的每个值都是一个更新数组。
我目前正在支持第二种方法,但是我想知道是否还有其他我可以做的可能比这些方法更好的方法?
答案 0 :(得分:0)
这取决于qps(每秒查询数)。
如果它很高,则第二个解决方案有一些问题,它无法扩展;多个服务器将串行查询同一密钥(因为redis的单线程)。 也许您可以尝试执行计时器任务,该任务会定期将数据拉到本地缓存中。
答案 1 :(得分:0)
@ninesalt,可以使用Redis管道发送批处理或命令以加快速度。我以前(开发中)已经使用了超过1万条命令的队列。
您还应该看看RedisTimeSeries,它可以使查询更快。它针对您描述的用例进行了优化,并提供了一些汇总,您可能会发现它们也很有用。