Jika Anda mengaktifkan fungsi memori virtual (EDIT:sekarang tidak digunakan lagi ), lalu Redis mulai menyimpan data yang "tidak terlalu sering digunakan" ke disk saat memori habis.
Jika memori virtual di Redis dinonaktifkan (default) dan maxmemory
parameter diatur (default), Redis tidak akan menggunakan memori lebih dari maxmemory
memungkinkan. Jika Anda mengubah maxmemory
dimatikan, Redis akan mulai menggunakan memori virtual (yaitu swap), dan kinerjanya akan sangat menurun.
Versi Redis yang lebih baru memiliki berbagai kebijakan saat maxmemory
tercapai:
volatile-lru
- hapus kunci di antara yang memiliki set kedaluwarsa, coba hapus kunci yang tidak digunakan baru-baru ini.volatile-ttl
- hapus kunci di antara yang memiliki set kedaluwarsa, coba hapus kunci dengan sisa waktu yang singkat untuk hidup.volatile-random
- hapus kunci arandom di antara kunci yang memiliki set kedaluwarsa.allkeys-lru
- sepertivolatile-lru
, tetapi akan menghapus semua jenis kunci, baik kunci normal maupun kunci dengan set kedaluwarsa.allkeys-random
-sepertivolatile-random
, tetapi akan menghapus semua jenis kunci, baik kunci normal maupun kunci dengan set kedaluwarsa.
Jika Anda memilih kebijakan yang hanya menghapus kunci dengan set EXPIRE, maka ketika Redis kehabisan memori, sepertinya program hanya membatalkan operasi malloc(). Artinya, jika Anda mencoba menyimpan lebih banyak data, operasi tulis akan gagal.
Beberapa tautan untuk info lebih lanjut:
- http://antirez.com/post/redis-as-LRU-cache.html
- http://eli.thegreenplace.net/2009/10/30/handling-out-of-memory-conditions-in-c/