日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

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

新聞中心

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

Redis中多線程處理過期策略

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

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

一、Redis過期策略

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

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

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

二、Redis 4.0多線程過期處理

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

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

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

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

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

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

2. 開啟多線程過期處理:

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

# Redis configuration file example

activerehashing yes

hz 100

三、定制化過期處理

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

1. 自定義過期鍵

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

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. 主動調(diào)用過期鍵

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

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

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


當(dāng)前題目:Redis中多線程處理過期策略(redis過期多線程)
URL鏈接:http://www.dlmjj.cn/article/dpigess.html