日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Redis中多線程處理過(guò)期策略(redis過(guò)期多線程)

Redis中多線程處理過(guò)期策略

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

Redis是一款高性能的NoSQL數(shù)據(jù)庫(kù),在緩存方面應(yīng)用非常廣泛。Redis通過(guò)使用過(guò)期時(shí)間來(lái)控制緩存的數(shù)據(jù)時(shí)效性,但是隨著Redis存儲(chǔ)的數(shù)據(jù)規(guī)模越來(lái)越大,過(guò)期鍵的數(shù)量也逐漸增加,給Redis帶來(lái)了很大的負(fù)擔(dān)。為了解決這個(gè)問(wèn)題,Redis引入了多線程機(jī)制處理過(guò)期策略。

一、Redis過(guò)期策略

Redis中使用的鍵值對(duì)都可以設(shè)置一個(gè)過(guò)期時(shí)間,當(dāng)該鍵值對(duì)的過(guò)期時(shí)間到達(dá)時(shí),Redis會(huì)自動(dòng)將該鍵值對(duì)刪除。Redis中有兩種過(guò)期策略:定期刪除和惰性刪除。

1. 定期刪除:Redis默認(rèn)情況下每隔100ms就會(huì)隨機(jī)測(cè)試一些設(shè)置了過(guò)期時(shí)間的鍵值對(duì),取出其中過(guò)期的鍵值對(duì)進(jìn)行刪除。這種策略的缺點(diǎn)是會(huì)浪費(fèi)一定的CPU資源進(jìn)行檢查,同時(shí)對(duì)于存活時(shí)間較短的鍵值對(duì)可能會(huì)錯(cuò)過(guò)過(guò)期時(shí)間。

2. 惰性刪除:Redis的惰性刪除策略遵循“用時(shí)刪除”的原則,只有在鍵值對(duì)被訪問(wèn)時(shí)才會(huì)檢查當(dāng)前鍵值對(duì)是否過(guò)期,如果發(fā)現(xiàn)過(guò)期就刪除。這種策略不會(huì)浪費(fèi)CPU資源,但是會(huì)占用更多的內(nèi)存,且對(duì)于長(zhǎng)時(shí)間未訪問(wèn)的鍵值對(duì)無(wú)法進(jìn)行及時(shí)刪除。

二、Redis 4.0多線程過(guò)期處理

Redis 4.0版本中引入了多線程機(jī)制處理過(guò)期策略,采用的是定期刪除和惰性刪除方式的組合。通過(guò)設(shè)置一個(gè)新的配置項(xiàng)“activerehashing”,啟用新的掃描器線程,該線程可以平滑的升級(jí)eviction策略。

1. 多線程過(guò)期處理的優(yōu)勢(shì):

(1)大大減少了對(duì)CPU的占用,提高了系統(tǒng)的性能。

(2)減少了在主線程中執(zhí)行刪除操作所需的時(shí)間,加快了執(zhí)行效率。

(3)增加了系統(tǒng)容錯(cuò)性,避免了單點(diǎn)故障的情況下緩存不可用的風(fēng)險(xiǎn)。

(4)解決了單線程模型下過(guò)期鍵集中的問(wèn)題,提高了內(nèi)存利用率。

2. 開(kāi)啟多線程過(guò)期處理:

在redis的配置文件中將“activerehashing”參數(shù)設(shè)置為“yes”,并將“hz”參數(shù)增加到100(默認(rèn)為10)來(lái)增加掃描次數(shù)。

# Redis configuration file example

activerehashing yes

hz 100

三、定制化過(guò)期處理

Redis 4.0多線程過(guò)期處理有時(shí)可能不能滿足特定的業(yè)務(wù)需求,可以通過(guò)輕量級(jí)標(biāo)準(zhǔn)庫(kù)“uv”提供的特性,實(shí)現(xiàn)自定義的過(guò)期鍵功能。

1. 自定義過(guò)期鍵

以設(shè)置SLOWLY_EXPIRE的鍵值對(duì)作為例子,利用管道(Pipeline)進(jìn)行批量查詢和批量刪除的功能,定制化的過(guò)期處理如下:

int expire_slowly(redisContext* c, int id, int64_t timeout) {

redisReply* reply = NULL;

const char * argv[] = {“SET”, “SLOWLY_EXPIRE”, “1”, “PX”, timeout, “NX”, NULL};

reply = redisCommandArgv(c, 6, argv, NULL);

if (reply == NULL) {

redisFree(c);

return -1;

}

freeReplyObject(reply);

return 0;

}

int delete_slowly(redisContext *c, int id) {

redisReply *reply;

const char* argv[] = { “DEL”, “SLOWLY_EXPIRE”, NULL };

reply = redisCommandArgv(c, 2, argv, NULL);

if (reply == NULL) {

redisFree(c);

return -1;

}

freeReplyObject(reply);

return 0;

}

2. 主動(dòng)調(diào)用過(guò)期鍵

設(shè)置完自定義過(guò)期鍵之后,我們可以通過(guò)類似“SELECT * FROM TABLE WHERE EVENT_TIME

通過(guò)定制化過(guò)期處理,我們可以更好地根據(jù)業(yè)務(wù)需求,充分發(fā)揮Redis的性能和可用性。

成都網(wǎng)站建設(shè)選創(chuàng)新互聯(lián)(?:028-86922220),專業(yè)從事成都網(wǎng)站制作設(shè)計(jì),高端小程序APP定制開(kāi)發(fā),成都網(wǎng)絡(luò)營(yíng)銷推廣等一站式服務(wù)。


網(wǎng)站欄目:Redis中多線程處理過(guò)期策略(redis過(guò)期多線程)
當(dāng)前鏈接:http://m.5511xx.com/article/dpigess.html