redis数据库的大小(2N或N ^ 2)

时间:2012-07-16 16:55:19

标签: ruby-on-rails ruby nosql redis paradigms

我有一个redis数据库,以及用Ruby编写的客户端。 这个数据库的大小是多少?

def follow!(user)
  $redis.multi do
    $redis.sadd(self.redis_key(:following), user.id)
    $redis.sadd(user.redis_key(:followers), self.id)
  end
end

def redis_key(str)
  "user:#{self.id}:#{str}"
end

# Usage:
userA.follow!(userB)

我认为它是2N,但有人告诉我它是N ^ 2,这是真的吗?

1 个答案:

答案 0 :(得分:3)

Redis数据库的大小是INFO返回的used_memory_human值。由于内存优化,从给定的数据结构中猜测实际大小并不容易。最好在有限数量的项目上进行测试并进行推断。

这里,假设N是用户数,您将在Redis密钥空间中拥有2N个集合。这些集合的大小取决于关注者的数量。

如果所有用户都有一个关注者而且只有一个关注者,那么您将获得2N组1个项目,因此2N项目。如果所有用户都拥有所有其他用户作为关注者,您将获得2N组(N-1)项,从而产生2N(N-1)个项目。