はい、Itamar Haberが言うように、このRedisメモリ最適化ガイドを参照する必要があります。ただし、さらにいくつかの点に注意する必要があります。
- KEYSよりHSETを優先します。 Redisは、キースペース管理だけで大量のメモリを消費します。簡単に言えば、1,000,000個のキーを持つ1つのHSETは、それぞれ1つの値を持つ1,000,000個のキーよりも最大10分の1のメモリを消費します。
- HSETサイズを
hash-max-zipmap-entries
未満に保ちます 有効なhash-max-zipmap-value
メモリが主なターゲットである場合。hash-max-zipmap-entries
が何であるかを必ず理解してください およびhash-max-zipmap-value
平均。また、ziplistについて読むのに少し時間がかかります。 - 実際には、
hash-max-zipmap-entries
を処理する必要はありません。 10M以上のキーを使用。代わりに、1つのHSETを複数のスロットに分割する必要があります。たとえば、hash-max-zipmap-entries
を設定します 10,000として。したがって、1,000万以上のキーを保存するには、それぞれ10,000以上の1000以上のHSETキーが必要です。大まかな目安として、crc32(key)%maxHsets。 - redisの文字列について読み、この構造の実際のメモリ管理に基づいたKEY名(HSET)の長さを使用します。簡単に言うと、キーの長さを7バイト未満に保つと、キーごとに16バイトが消費されますが、8バイトのキーはそれぞれ48バイトを消費します。なんで?単純な動的文字列について読んでください。
以下について読むと役立つ場合があります:
- Redisメモリの最適化(sripathikrishnanから)
- 内部ziplist構造に関するコメント。
- 数億の単純なキーと値のペアをRedis(Instagram)に保存する