真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Redis過(guò)期策略及實(shí)現(xiàn)原理-創(chuàng)新互聯(lián)

我們?cè)谑褂胷edis時(shí),一般會(huì)設(shè)置一個(gè)過(guò)期時(shí)間,當(dāng)然也有不設(shè)置過(guò)期時(shí)間的,也就是永久不過(guò)期。

十年的淮安區(qū)網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營(yíng)銷(xiāo)型網(wǎng)站的優(yōu)勢(shì)是能夠根據(jù)用戶(hù)設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整淮安區(qū)建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)公司從事“淮安區(qū)網(wǎng)站設(shè)計(jì)”,“淮安區(qū)網(wǎng)站推廣”以來(lái),每個(gè)客戶(hù)項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

當(dāng)我們?cè)O(shè)置了過(guò)期時(shí)間,redis是如何判斷是否過(guò)期,以及根據(jù)什么策略來(lái)進(jìn)行刪除的。

redis設(shè)置過(guò)期時(shí)間:
expire key time(以秒為單位)–這是最常用的方式
setex(String key, int seconds, String value)–字符串獨(dú)有的方式
注:

除了字符串自己獨(dú)有設(shè)置過(guò)期時(shí)間的方法外,其他方法都需要依靠expire方法來(lái)設(shè)置時(shí)間

如果沒(méi)有設(shè)置時(shí)間,那緩存就是永不過(guò)期

如果設(shè)置了過(guò)期時(shí)間,之后又想讓緩存永不過(guò)期,使用persist key

三種過(guò)期策略:
定時(shí)刪除
含義:在設(shè)置key的過(guò)期時(shí)間的同時(shí),為該key創(chuàng)建一個(gè)定時(shí)器,讓定時(shí)器在key的過(guò)期時(shí)間來(lái)臨時(shí),對(duì)key進(jìn)行刪除

優(yōu)點(diǎn):保證內(nèi)存被盡快釋放

缺點(diǎn):
若過(guò)期key很多,刪除這些key會(huì)占用很多的CPU時(shí)間,在CPU時(shí)間緊張的情況下,CPU不能把所有的時(shí)間用來(lái)做要緊的事兒,還需要去花時(shí)間刪除這些key
定時(shí)器的創(chuàng)建耗時(shí),若為每一個(gè)設(shè)置過(guò)期時(shí)間的key創(chuàng)建一個(gè)定時(shí)器(將會(huì)有大量的定時(shí)器產(chǎn)生),性能影響嚴(yán)重
懶漢式式刪除
含義:key過(guò)期的時(shí)候不刪除,每次通過(guò)key獲取值的時(shí)候去檢查是否過(guò)期,若過(guò)期,則刪除,返回null。

優(yōu)點(diǎn):刪除操作只發(fā)生在通過(guò)key取值的時(shí)候發(fā)生,而且只刪除當(dāng)前key,所以對(duì)CPU時(shí)間的占用是比較少的,而且此時(shí)的刪除是已經(jīng)到了非做不可的地步(如果此時(shí)還不刪除的話(huà),我們就會(huì)獲取到了已經(jīng)過(guò)期的key了)

缺點(diǎn):若大量的key在超出超時(shí)時(shí)間后,很久一段時(shí)間內(nèi),都沒(méi)有被獲取過(guò),那么可能發(fā)生內(nèi)存泄露(無(wú)用的垃圾占用了大量的內(nèi)存)

定期刪除
含義:每隔一段時(shí)間執(zhí)行一次刪除過(guò)期key操作

優(yōu)點(diǎn):
通過(guò)限制刪除操作的時(shí)長(zhǎng)和頻率,來(lái)減少刪除操作對(duì)CPU時(shí)間的占用–處理”定時(shí)刪除”的缺點(diǎn)
定期刪除過(guò)期key–處理”懶漢式刪除”的缺點(diǎn)
缺點(diǎn):
在內(nèi)存友好方面,不如”定時(shí)刪除”(會(huì)造成一定的內(nèi)存占用,但是沒(méi)有懶漢式那么占用內(nèi)存) 在CPU時(shí)間友好方面,不如”懶漢式刪除”(會(huì)定期的去進(jìn)行比較和刪除操作,cpu方面不如懶漢式,但是比定時(shí)好)

難點(diǎn):合理設(shè)置刪除操作的執(zhí)行時(shí)長(zhǎng)(每次刪除執(zhí)行多長(zhǎng)時(shí)間)和執(zhí)行頻率(每隔多長(zhǎng)時(shí)間做一次刪除)(這個(gè)要根據(jù)服務(wù)器運(yùn)行情況來(lái)定了),每次執(zhí)行時(shí)間太長(zhǎng),或者執(zhí)行頻率太高對(duì)cpu都是一種壓力。

每次進(jìn)行定期刪除操作執(zhí)行之后,需要記錄遍歷循環(huán)到了哪個(gè)標(biāo)志位,以便下一次定期時(shí)間來(lái)時(shí),從上次位置開(kāi)始進(jìn)行循環(huán)遍歷

說(shuō)明:memcached只是用了惰性刪除,而redis同時(shí)使用了惰性刪除與定期刪除,這也是二者的一個(gè)不同點(diǎn)(可以看做是redis優(yōu)于memcached的一點(diǎn));

對(duì)于懶漢式刪除而言,并不是只有獲取key的時(shí)候才會(huì)檢查key是否過(guò)期,在某些設(shè)置key的方法上也會(huì)檢查(eg.setnx key2 value2:該方法類(lèi)似于memcached的add方法,如果設(shè)置的key2已經(jīng)存在,那么該方法返回false,什么都不做;如果設(shè)置的key2不存在,那么該方法設(shè)置緩存key2-value2。假設(shè)調(diào)用此方法的時(shí)候,發(fā)現(xiàn)redis中已經(jīng)存在了key2,但是該key2已經(jīng)過(guò)期了,如果此時(shí)不執(zhí)行刪除操作的話(huà),setnx方法將會(huì)直接返回false,也就是說(shuō)此時(shí)并沒(méi)有重新設(shè)置key2-value2成功,所以對(duì)于一定要在setnx執(zhí)行之前,對(duì)key2進(jìn)行過(guò)期檢查)。

Redis采用的過(guò)期策略
懶漢式刪除+定期刪除
懶漢式刪除流程:
在進(jìn)行g(shù)et或setnx等操作時(shí),先檢查key是否過(guò)期;
若過(guò)期,刪除key,然后執(zhí)行相應(yīng)操作;
若沒(méi)過(guò)期,直接執(zhí)行相應(yīng)操作;
定期刪除流程(簡(jiǎn)單而言,對(duì)指定個(gè)數(shù)個(gè)庫(kù)的每一個(gè)庫(kù)隨機(jī)刪除小于等于指定個(gè)數(shù)個(gè)過(guò)期key):
遍歷每個(gè)數(shù)據(jù)庫(kù)(就是redis.conf中配置的”database”數(shù)量,默認(rèn)為16)
檢查當(dāng)前庫(kù)中的指定個(gè)數(shù)個(gè)key(默認(rèn)是每個(gè)庫(kù)檢查20個(gè)key,注意相當(dāng)于該循環(huán)執(zhí)行20次,循環(huán)體是下邊的描述)
如果當(dāng)前庫(kù)中沒(méi)有一個(gè)key設(shè)置了過(guò)期時(shí)間,直接執(zhí)行下一個(gè)庫(kù)的遍歷
隨機(jī)獲取一個(gè)設(shè)置了過(guò)期時(shí)間的key,檢查該key是否過(guò)期,如果過(guò)期,刪除key
判斷定期刪除操作是否已經(jīng)達(dá)到指定時(shí)長(zhǎng),若已經(jīng)達(dá)到,直接退出定期刪除。
對(duì)于定期刪除,在程序中有一個(gè)全局變量current_db來(lái)記錄下一個(gè)將要遍歷的庫(kù),假設(shè)有16個(gè)庫(kù),我們這一次定期刪除遍歷了10個(gè),那此時(shí)的current_db就是11,下一次定期刪除就從第11個(gè)庫(kù)開(kāi)始遍歷,假設(shè)current_db等于15了,那么之后遍歷就再?gòu)?號(hào)庫(kù)開(kāi)始(此時(shí)current_db==0)

總結(jié)
在實(shí)際中,如果我們要自己設(shè)計(jì)過(guò)期策略, 在使用懶漢式刪除+定期刪除時(shí),控制時(shí)長(zhǎng)和頻率這個(gè)尤為關(guān)鍵,需要結(jié)合服務(wù)器性能,已經(jīng)并發(fā)量等情況進(jìn)行調(diào)整,以致最佳。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線(xiàn),公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。


本文標(biāo)題:Redis過(guò)期策略及實(shí)現(xiàn)原理-創(chuàng)新互聯(lián)
鏈接分享:http://weahome.cn/article/dsjsjj.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部