1

我正在尝试使用redis来缓存270只股票的时间序列数据。每隔 2 或 3 秒,我就会收到一系列刚刚发生的股票变化(交易)。我想将这些数据保存在 redis 中,所以我目前正在尝试考虑最好(也是最有效)的方法。

首先,我考虑在 redis 中有 270 个列表,其中每个列表都是可以更新的股票之一,并且在任何更新时,我都会将对象添加到相应的列表中。这有两个主要问题,假设其中一个更新有 10 种不同的股票刚刚改变,这意味着我必须与 redis 沟通 10 次。另一个问题是检索,如果我想获取所有股票的数据,那么我将不得不与redis通信270次。

另一种方法是只使用一个哈希映射到具有 270 个键的 JSON 对象,并且对象中的每个值都是一个更新数组。

我目前赞成第二种方法,但我想知道是否还有其他我可以做的事情可能比这些方法更好?

4

2 回答 2

1

@ninesalt 您可以使用 Redis 管道发送批处理或命令以加快速度。我之前(在开发中)使用过超过 10k 个命令的队列。

您还应该看看RedisTimeSeries可以使查询更快。它针对您描述的用例进行了优化,并提供了几个您可能会发现有用的聚合。

于 2019-08-21T13:12:51.573 回答
0

这取决于 qps(每秒查询数)。

如果它非常高,则第二种解决方案存在一些问题,无法扩展;多个服务器将串行查询相同的密钥(因为redis的单线程)。也许您可以尝试定期将数据拉到本地缓存的计时器任务。

于 2018-11-04T18:51:07.693 回答