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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Redis掌控自身設(shè)定的過(guò)期時(shí)間(redis自己控制過(guò)期)

Redis掌控自身設(shè)定的過(guò)期時(shí)間

成都創(chuàng)新互聯(lián)公司從2013年成立,先為分宜等服務(wù)建站,分宜等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢(xún)服務(wù)。為分宜企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

Redis是一個(gè)非常有用且流行的鍵值存儲(chǔ)系統(tǒng)。它有一個(gè)非常特殊的功能——過(guò)期時(shí)間,這個(gè)功能可以把鍵值對(duì)設(shè)置一個(gè)時(shí)間限制,一旦時(shí)間到了這個(gè)鍵值對(duì)就會(huì)被刪除。這個(gè)功能非常有用,可以當(dāng)作緩存使用,提高程序的運(yùn)行速度。而Redis是如何掌控自身設(shè)定的過(guò)期時(shí)間的呢?下面我們就來(lái)一起解析一下。

在Redis中設(shè)置一個(gè)過(guò)期時(shí)間非常簡(jiǎn)單,在Redis客戶端中可以使用EXPIRE或者PEXPIRE命令來(lái)設(shè)置,如:

#使用EXPIRE在Redis中設(shè)置過(guò)期時(shí)間為300秒
EXPIRE mykey 300

#使用PEXPIRE在Redis中設(shè)置過(guò)期時(shí)間為1000毫秒
PEXPIRE mykey 1000

但是Redis如何掌控自身設(shè)定的過(guò)期時(shí)間呢?Redis底層使用一個(gè)定時(shí)器來(lái)判斷鍵值對(duì)是否過(guò)期,也就是說(shuō),Redis在內(nèi)部開(kāi)啟了一個(gè)定時(shí)器,根據(jù)鍵值對(duì)的過(guò)期時(shí)間來(lái)計(jì)算它何時(shí)會(huì)過(guò)期,一旦時(shí)間到了Redis會(huì)在后臺(tái)把這個(gè)鍵值對(duì)刪除掉。

Redis底層使用的定時(shí)器是平衡二叉樹(shù)實(shí)現(xiàn)的,這個(gè)平衡二叉樹(shù)的節(jié)點(diǎn)被稱(chēng)為【過(guò)期節(jié)點(diǎn)】。Redis維護(hù)一個(gè)名為server.expiretrie的平衡二叉樹(shù),每個(gè)節(jié)點(diǎn)都包含了過(guò)期時(shí)間,以及過(guò)期鍵的集合。平衡二叉樹(shù)中的節(jié)點(diǎn)是按照過(guò)期時(shí)間排好序的,最小的過(guò)期時(shí)間在最左邊,而最大的過(guò)期時(shí)間在最右邊。

當(dāng)我們?cè)O(shè)置一個(gè)鍵值對(duì)的過(guò)期時(shí)間時(shí),Redis會(huì)在平衡二叉樹(shù)中插入一個(gè)新的過(guò)期節(jié)點(diǎn),然后把這個(gè)節(jié)點(diǎn)的過(guò)期時(shí)間和對(duì)應(yīng)的鍵添加進(jìn)去。這樣,每當(dāng)Redis需要?jiǎng)h除過(guò)期鍵值對(duì)時(shí),它就可以從過(guò)期節(jié)點(diǎn)開(kāi)始,按照順序把過(guò)期時(shí)間小于等于當(dāng)前時(shí)間的所有節(jié)點(diǎn)遍歷并刪除。

除了使用平衡二叉樹(shù)來(lái)維護(hù)過(guò)期節(jié)點(diǎn)外,Redis還有一個(gè)名為server.cronloops的定時(shí)器,定期觸發(fā)server.expiretrie中的過(guò)期事件。這個(gè)定時(shí)器的時(shí)間間隔很短,是一個(gè)非常小的值,以確保Redis能夠快速遍歷所有過(guò)期節(jié)點(diǎn),同時(shí)也不至于給系統(tǒng)帶來(lái)太大的壓力。

總結(jié)一下,Redis掌控自身設(shè)定的過(guò)期時(shí)間的方式是:底層使用平衡二叉樹(shù)來(lái)維護(hù)過(guò)期時(shí)間節(jié)點(diǎn),同時(shí)使用一個(gè)很短的定時(shí)器來(lái)定期觸發(fā)過(guò)期事件。這種方式保證了Redis對(duì)鍵值對(duì)的過(guò)期時(shí)間可以掌控自如,同時(shí)也不會(huì)給系統(tǒng)帶來(lái)太大的壓力。如果你正在使用Redis來(lái)做緩存,那么這個(gè)功能一定可以幫助你提高程序的運(yùn)行速度。

參考代碼:

“`python

import redis

import time

#連接Redis

r = redis.Redis(host=’localhost’, port=6379, db=0)

#設(shè)置一個(gè)鍵值對(duì),過(guò)期時(shí)間為10秒

r.set(‘test_key’, ‘test_value’)

r.expire(‘test_key’, 10)

#獲取鍵值對(duì)值

value = r.get(‘test_key’)

print(f”test_key: {value}”)

#等待11秒后再次獲取鍵值對(duì)值

time.sleep(11)

value = r.get(‘test_key’)

print(f”test_key: {value}”)


輸出:

test_key: b’test_value’

test_key: None

創(chuàng)新互聯(lián)(cdcxhl.com)提供穩(wěn)定的云服務(wù)器,香港云服務(wù)器,BGP云服務(wù)器,雙線云服務(wù)器,高防云服務(wù)器,成都云服務(wù)器,服務(wù)器托管。精選鉅惠,歡迎咨詢(xún):028-86922220。


文章題目:Redis掌控自身設(shè)定的過(guò)期時(shí)間(redis自己控制過(guò)期)
鏈接分享:http://www.5511xx.com/article/dppeoje.html