Berikut adalah beberapa sumber konsumsi memori "tersembunyi" di Redis:
-
Marc sudah menyebutkan buffer yang dikelola oleh master untuk memberi makan budak. Jika seorang budak tertinggal di belakang tuannya (karena berjalan pada kotak yang lebih lambat misalnya), maka beberapa memori akan dikonsumsi pada master.
-
ketika perintah yang berjalan lama terdeteksi, Redis mencatatnya di area SLOWLOG, yang membutuhkan beberapa memori. Anda mungkin ingin menggunakan perintah SLOWLOG LEN untuk memeriksa jumlah catatan yang Anda miliki di sini.
-
buffer komunikasi juga dapat mengambil memori. Sejauh yang saya ingat, dengan versi lama Redis (dan 2.4 cukup lama - Anda harus benar-benar memutakhirkan), itu tidak terbatas, artinya jika Anda mentransfer objek besar pada suatu titik, buffer komunikasi yang terkait dengan koneksi klien ini akan tumbuh dan tidak pernah menyusut. Jika ada banyak klien yang kadang-kadang berurusan dengan benda-benda besar, itu bisa menjadi penjelasan yang mungkin. Jika Anda menggunakan perintah mengambil data yang sangat besar dari Redis (dalam satu tembakan), itu bisa menjadi penjelasan juga. Misalnya, perintah KEYS * sederhana yang diterapkan pada server Redis yang menyimpan jutaan kunci akan menghabiskan banyak memori.
Anda menyebutkan bahwa Anda memiliki objek sebesar 25 MB. Anda memiliki 404 koneksi klien, jika masing-masing klien perlu mengakses objek tersebut pada suatu waktu, itu akan menghabiskan memori 10 GB.