一、最大緩存設定
示例:maxmemory 100mb
機關:mb,gb。
預設為0,沒有指定最大緩存,如果有新的資料添加,超過最大記憶體,則會使redis崩潰,是以一點要設定。
設定maxmemory之後,配合的要設定緩存資料回收政策。
二、回收政策算法設定
當maxmemory限制到達的時候,Redis将采取的準确行為是由maxmemory-policy配置指令配置的。
以下政策可用:
(1)、noeviction:當到達記憶體限制時傳回錯誤。當用戶端嘗試執行指令時會導緻更多記憶體占用(大多數寫指令,除了DEL和一些例外)。
(2)、allkeys-lru:回收最近最少使用(LRU)的鍵,為新資料騰出空間。
(3)、volatile-lru:回收最近最少使用(LRU)的鍵,但是隻回收有設定過期的鍵,為新資料騰出空間。
(4)、allkeys-random:回收随機的鍵,為新資料騰出空間。
(5)、volatile-random:回收随機的鍵,但是隻回收有設定過期的鍵,為新資料騰出空間。
(6)、volatile-ttl:回收有設定過期的鍵,嘗試先回收離TTL最短時間的鍵,為新資料騰出空間。
使用政策規則:
(1)、如果資料呈現幂律分布,也就是一部分資料通路頻率高,一部分資料通路頻率低,則使用allkeys-lru。
(2)、如果資料呈現平等分布,也就是所有的資料通路頻率都相同,則使用allkeys-random。
redis回收算法,實際不是嚴謹的LRU算法,而是抽樣回收資料,這樣算是為了減少消耗記憶體使用,但是抽樣回收的緩存和全部資料回收緩存差異非常小,或者根本就沒有。
三、生産使用
(1)、先預測好系統所需要的記憶體高峰,部署相對應記憶體的緩存伺服器。
(2)、設定maxmemory和相對應的回收政策算法,設定最好為實體記憶體的3/4,或者比例更小,因為redis複制資料等其他服務時,也是需要緩存的。以防緩存資料過大緻使redis崩潰,造成系統出錯不可用。犧牲一部分緩存資料,儲存整體系統可用性。