1

Rubyで書かれたredisデータベースとそのクライアントがあります。このデータベースのサイズはどれくらいですか?

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と言われましたが、本当は何ですか?

4

1 に答える 1

3

Redisデータベースのサイズは、INFOによって返されるused_memory_human値です。メモリが最適化されているため、特定のデータ構造から実際のサイズを推測するのは簡単ではありません。限られた数のアイテムでテストし、推定することをお勧めします。

ここで、Nがユーザー数であるとすると、Redisキースペースに2Nセットがあります。これらのセットのサイズは、フォロワーの数によって異なります。

すべてのユーザーが1人のフォロワーと1人だけの場合、1つのアイテムの2Nセット、つまり2Nのアイテムを取得します。すべてのユーザーが他のすべてのユーザーをフォロワーとして持っている場合、2Nセットの(N-1)アイテムを取得し、合計2N(N-1)アイテムになります。

于 2012-07-16T17:17:29.650 に答える