Ya, seperti yang dikatakan Itamar Haber, Anda harus melihat panduan pengoptimalan memori redis ini. Tetapi Anda juga harus mengingat beberapa hal lagi:
- Lebih suka HSET daripada KEYS. Redis menghabiskan banyak memori hanya pada manajemen ruang utama. Secara sederhana (dan kasar), 1 HSET dengan 1.000.000 kunci menghabiskan memori hingga 10x lebih sedikit daripada 1.000.000 kunci dengan masing-masing satu nilai.
- Jaga ukuran HSET kurang dari
hash-max-zipmap-entries
danhash-max-zipmap-value
yang valid jika memori adalah target utama. Pastikan untuk memahamihash-max-zipmap-entries
danhash-max-zipmap-value
berarti. Selain itu, luangkan waktu untuk membaca tentang ziplist. - Anda sebenarnya tidak ingin menangani
hash-max-zipmap-entries
dengan 10M+ kunci; sebagai gantinya, Anda harus memecah satu HSET menjadi beberapa slot. Misalnya, Anda menyetelhash-max-zipmap-entries
sebagai 10.000. Jadi untuk menyimpan 10M+ kunci, Anda memerlukan 1000+ kunci HSET dengan masing-masing 10.000. Sebagai aturan praktis:crc32(key) % maxHsets. - Baca tentang string dalam redis dan gunakan nama KUNCI (dalam HSET) panjangnya berdasarkan manajemen memori nyata untuk struktur ini. Secara sederhana, menjaga panjang kunci di bawah 7 byte, Anda menghabiskan 16 byte per kunci, tetapi kunci 8-byte menghabiskan masing-masing 48 byte. Mengapa? Baca tentang string dinamis sederhana.
Mungkin bermanfaat untuk membaca tentang:
- Optimasi Memori Redis (dari sripathikrishnan)
- Komentar tentang struktur ziplist internal.
- Menyimpan ratusan juta pasangan nilai kunci sederhana di Redis (Instagram)