一,、最大緩存設(shè)置
示例:maxmemory 100mb
單位:mb,gb。
默認(rèn)為0,,沒有指定最大緩存,,如果有新的數(shù)據(jù)添加,超過最大內(nèi)存,,則會(huì)使redis崩潰,,所以一點(diǎn)要設(shè)置。
設(shè)置maxmemory之后,,配合的要設(shè)置緩存數(shù)據(jù)回收策略,。
二、回收策略算法設(shè)置
當(dāng)maxmemory限制到達(dá)的時(shí)候,,Redis將采取的準(zhǔn)確行為是由maxmemory-policy配置指令配置的,。
以下策略可用: (1)、noeviction:當(dāng)?shù)竭_(dá)內(nèi)存限制時(shí)返回錯(cuò)誤,。當(dāng)客戶端嘗試執(zhí)行命令時(shí)會(huì)導(dǎo)致更多內(nèi)存占用(大多數(shù)寫命令,,除了DEL和一些例外)。 (2),、allkeys-lru:回收最近最少使用(LRU)的鍵,,為新數(shù)據(jù)騰出空間。 (3),、volatile-lru:回收最近最少使用(LRU)的鍵,,但是只回收有設(shè)置過期的鍵,,為新數(shù)據(jù)騰出空間。 (4),、allkeys-random:回收隨機(jī)的鍵,,為新數(shù)據(jù)騰出空間。 (5),、volatile-random:回收隨機(jī)的鍵,,但是只回收有設(shè)置過期的鍵,為新數(shù)據(jù)騰出空間,。 (6),、volatile-ttl:回收有設(shè)置過期的鍵,嘗試先回收離TTL最短時(shí)間的鍵,,為新數(shù)據(jù)騰出空間,。 使用策略規(guī)則:
(1)、如果數(shù)據(jù)呈現(xiàn)冪律分布,,也就是一部分?jǐn)?shù)據(jù)訪問頻率高,,一部分?jǐn)?shù)據(jù)訪問頻率低,則使用allkeys-lru,。
(2),、如果數(shù)據(jù)呈現(xiàn)平等分布,也就是所有的數(shù)據(jù)訪問頻率都相同,,則使用allkeys-random,。
redis回收算法,實(shí)際不是嚴(yán)謹(jǐn)?shù)腖RU算法,,而是抽樣回收數(shù)據(jù),,這樣算是為了減少消耗內(nèi)存使用,但是抽樣回收的緩存和全部數(shù)據(jù)回收緩存差異非常小,,或者根本就沒有,。
三、生產(chǎn)使用
(1),、先預(yù)測好系統(tǒng)所需要的內(nèi)存高峰,,部署相對應(yīng)內(nèi)存的緩存服務(wù)器。
(2),、設(shè)置maxmemory和相對應(yīng)的回收策略算法,,設(shè)置最好為物理內(nèi)存的3/4,,或者比例更小,,因?yàn)閞edis復(fù)制數(shù)據(jù)等其他服務(wù)時(shí),也是需要緩存的,。以防緩存數(shù)據(jù)過大致使redis崩潰,,造成系統(tǒng)出錯(cuò)不可用,。犧牲一部分緩存數(shù)據(jù),保存整體系統(tǒng)可用性,。
|
|