我有一个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,这是真的吗?
答案 0 :(得分:3)
Redis数据库的大小是INFO返回的used_memory_human值。由于内存优化,从给定的数据结构中猜测实际大小并不容易。最好在有限数量的项目上进行测试并进行推断。
这里,假设N是用户数,您将在Redis密钥空间中拥有2N个集合。这些集合的大小取决于关注者的数量。
如果所有用户都有一个关注者而且只有一个关注者,那么您将获得2N组1个项目,因此2N项目。如果所有用户都拥有所有其他用户作为关注者,您将获得2N组(N-1)项,从而产生2N(N-1)个项目。