仮想メモリ機能をオンにしている場合(編集:非推奨 )、メモリがなくなると、Redisは「あまり使用されない」データをディスクに保存し始めます。
Redisの仮想メモリが無効になっている場合(デフォルト)、maxmemory
パラメータが設定されている場合(デフォルト)、Redisはmaxmemory
より多くのメモリを使用しません 許可します。 maxmemory
を回すと オフにすると、Redisは仮想メモリ(つまりスワップ)の使用を開始し、パフォーマンスが大幅に低下します。
maxmemory
の場合、Redisの新しいバージョンにはさまざまなポリシーがあります 到達:
-
volatile-lru
-有効期限が設定されているキーを削除し、最近使用されていないキーを削除しようとします。 -
volatile-ttl
-有効期限が設定されているキーを削除し、残り時間が短いキーを削除しようとします。 -
volatile-random
-有効期限が設定されているキーの中からランダムなキーを削除します。 -
allkeys-lru
--likevolatile-lru
、ただし、通常のキーまたは有効期限が設定されたキーの両方のすべての種類のキーが削除されます。 -
allkeys-random
-volatile-random
のように 、ただし、通常のキーと有効期限が設定されたキーの両方のすべての種類のキーが削除されます。
EXPIREが設定されたキーのみを削除するポリシーを選択した場合、Redisのメモリが不足すると、プログラムはmalloc()操作を中止したように見えます。つまり、より多くのデータを保存しようとすると、書き込み操作は単に失敗します。
詳細については、いくつかのリンクをご覧ください:
- http://antirez.com/post/redis-as-LRU-cache.html
- http://eli.thegreenplace.net/2009/10/30/handling-out-of-memory-conditions-in-c/