Redis內(nèi)存淘汰策略
Redis在使用內(nèi)存達到某個閾值(通過maxmemory配置)的時候柏腻,就會觸發(fā)內(nèi)存淘汰機制纸厉,選取一些key來刪除。
內(nèi)存淘汰有許多策略五嫂,下面分別介紹這幾種不同的策略颗品。
maxmemory <bytes> 配置內(nèi)存閾值
maxmemory-policy noeviction
- noeviction:當內(nèi)存不足以容納新寫入數(shù)據(jù)時,新寫入操作會報錯沃缘。默認策略
- allkeys-lru:當內(nèi)存不足以容納新寫入數(shù)據(jù)時抛猫,在鍵空間中,移除最近最少使用的key孩灯。
- allkeys-random:當內(nèi)存不足以容納新寫入數(shù)據(jù)時闺金,在鍵空間中,隨機移除某個key峰档。
- volatile-lru:當內(nèi)存不足以容納新寫入數(shù)據(jù)時败匹,在設(shè)置了過期時間的鍵空間中,移除最近最少使用的key讥巡。
- volatile-random:當內(nèi)存不足以容納新寫入數(shù)據(jù)時掀亩,在設(shè)置了過期時間的鍵空間中,隨機移除某個key欢顷。
- volatile-ttl:當內(nèi)存不足以容納新寫入數(shù)據(jù)時槽棍,在設(shè)置了過期時間的鍵空間中,有更早過期時間的key優(yōu)先移除抬驴。
如何選取合適的策略炼七?
比較推薦的是兩種lru策略。根據(jù)自己的業(yè)務(wù)需求布持。如果你使用Redis只是作為緩存豌拙,不作為DB持久化,那推薦選擇allkeys-lru题暖;如果你使用Redis同時用于緩存和數(shù)據(jù)持久化按傅,那推薦選擇volatile-lru捉超。