小編給大家分享一下redis緩存策略有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、沙縣ssl等。為千余家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的沙縣網(wǎng)站制作公司
將Redis用作緩存時(shí), 如果內(nèi)存空間用滿, 就會(huì)自動(dòng)驅(qū)逐老的數(shù)據(jù)。 默認(rèn)情況下memcached就是這種方式, 大部分開發(fā)者都比較熟悉。LRU是Redis唯一支持的回收算法.
驅(qū)逐策略
達(dá)到最大內(nèi)存限制時(shí)(maxmemory), Redis 根據(jù) maxmemory-policy 配置的策略, 來決定具體的行為。
當(dāng)前版本,Redis 3.0 支持的策略包括:
noeviction: 不刪除策略, 達(dá)到最大內(nèi)存限制時(shí), 如果需要更多內(nèi)存, 直接返回錯(cuò)誤信息。 大多數(shù)寫命令都會(huì)導(dǎo)致占用更多的內(nèi)存(有極少數(shù)會(huì)例外, 如 DEL )。
allkeys-lru: 所有key通用; 優(yōu)先刪除最近最少使用(less recently used ,LRU) 的 key。
volatile-lru: 只限于設(shè)置了 expire 的部分; 優(yōu)先刪除最近最少使用(less recently used ,LRU) 的 key。
allkeys-random: 所有key通用; 隨機(jī)刪除一部分 key。
volatile-random: 只限于設(shè)置了 expire 的部分; 隨機(jī)刪除一部分 key。
volatile-ttl: 只限于設(shè)置了 expire 的部分; 優(yōu)先刪除剩余時(shí)間(time to live,TTL) 短的key。
如果沒有設(shè)置 expire 的key, 不滿足先決條件(prerequisites); 那么 volatile-lru, volatile-random 和 volatile-ttl 策略的行為, 和 noeviction(不刪除) 基本上一致。
您需要根據(jù)系統(tǒng)的特征, 來選擇合適的驅(qū)逐策略。 當(dāng)然, 在運(yùn)行過程中也可以通過命令動(dòng)態(tài)設(shè)置驅(qū)逐策略, 并通過 INFO 命令監(jiān)控緩存的 miss 和 hit, 來進(jìn)行調(diào)優(yōu)。
一般來說:
如果分為熱數(shù)據(jù)與冷數(shù)據(jù), 推薦使用 allkeys-lru 策略。 也就是, 其中一部分key經(jīng)常被讀寫. 如果不確定具體的業(yè)務(wù)特征, 那么 allkeys-lru 是一個(gè)很好的選擇。
如果需要循環(huán)讀寫所有的key, 或者各個(gè)key的訪問頻率差不多, 可以使用 allkeys-random 策略, 即讀寫所有元素的概率差不多。
假如要讓 Redis 根據(jù) TTL 來篩選需要?jiǎng)h除的key, 請(qǐng)使用 volatile-ttl 策略。
volatile-lru 和 volatile-random 策略主要應(yīng)用場(chǎng)景是: 既有緩存,又有持久key的實(shí)例中。 一般來說, 像這類場(chǎng)景, 應(yīng)該使用兩個(gè)單獨(dú)的 Redis 實(shí)例。
值得一提的是, 設(shè)置 expire 會(huì)消耗額外的內(nèi)存, 所以使用 allkeys-lru 策略, 可以更高效地利用內(nèi)存, 因?yàn)檫@樣就可以不再設(shè)置過期時(shí)間了。
以上是redis緩存策略有哪些的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!