2

我目前在 Rails 中使用计数器缓存列,但我开始对关联(评级)执行更复杂的查询。出于性能原因,我将数据移动到 Redis。

我的问题是,在 Redis 中存储所有数据时,计数器缓存列是否仍然相关,或者 Redis 会使这种方法过时(并且只对 Redis 存储执行计数)?

我想这归结为:

post.ratings_count # cache_column, table in sql database
$redis.scard("post:123:ratings")

当然,这post.ratings_count将只是获取一个属性,而不是执行查询(因为帖子已经被加载)。我唯一担心的是它$redis.scard会在 Redis 存储上执行某种“查询”。可以忽略不计吗?

4

1 回答 1

3

您不必担心 SCARD 命令的性能。

redis SCARD 命令的时间复杂度为 O(1),这意味着 redis 执行此操作几乎没有成本。

如果您有能力将完整集存储在 redis 中,那么缓存计数就不再有用了。

不幸的是,您并不总是有足够的空间将所有内容存储在 redis 中(redis 存储必须适合您的 ram),因此在这种情况下,缓存计数列仍然有意义。

于 2013-04-26T08:20:05.763 回答