redis如何设置定时过期_redis补充6之Redis 设置过期时间
一般情況下,我們?cè)O(shè)置保存的緩存數(shù)據(jù)的時(shí)候都會(huì)設(shè)置一個(gè)過期時(shí)間。
Redis 中有個(gè)設(shè)置時(shí)間過期的功能,即對(duì)存儲(chǔ)在 Redis 數(shù)據(jù)庫中的值可以設(shè)置一個(gè)過期時(shí)間。作為一個(gè)緩存數(shù)據(jù)庫,這是非常實(shí)用的。如我們一般項(xiàng)目中的 token 或者一些登錄信息,尤其是短信驗(yàn)證碼都是有時(shí)間限制的,按照傳統(tǒng)的數(shù)據(jù)庫處理方式,一般都是自己判斷過期,這樣無疑會(huì)嚴(yán)重影響項(xiàng)目性能。
我們 set key 的時(shí)候,都可以給一個(gè) expire time,就是過期時(shí)間,通過過期時(shí)間我們可以指定這個(gè) key 可以存活的時(shí)間。
如果假設(shè)你設(shè)置了一批 key 只能存活 1 個(gè)小時(shí),那么接下來 1 小時(shí)后,Redis 是怎么對(duì)這批 key 進(jìn)行刪除的?
定期刪除+惰性刪除。
通過名字大概就能猜出這兩個(gè)刪除方式的意思了。
定期刪除:Redis 默認(rèn)是每隔 100ms 就隨機(jī)抽取一些設(shè)置了過期時(shí)間的 key,檢查其是否過期,如果過期就刪除。注意這里是隨機(jī)抽取的。為什么要隨機(jī)呢?你想一想假如 Redis 存了幾十萬個(gè) key ,每隔 100ms 就遍歷所有的設(shè)置過期時(shí)間的 key 的話,就會(huì)給 CPU 帶來很大的負(fù)載!
惰性刪除:定期刪除可能會(huì)導(dǎo)致很多過期 key 到了時(shí)間并沒有被刪除掉。所以就有了惰性刪除。假如你的過期 key,靠定期刪除沒有被刪除掉,還停留在內(nèi)存里,除非你的系統(tǒng)去查一下那個(gè) key,才會(huì)被 Redis 給刪除掉。這就是所謂的惰性刪除,也是夠懶的哈!
但是僅僅通過設(shè)置過期時(shí)間還是有問題的。我們想一下:如果定期刪除漏掉了很多過期 key,然后你也沒及時(shí)去查,也就沒走惰性刪除,此
總結(jié)
以上是生活随笔為你收集整理的redis如何设置定时过期_redis补充6之Redis 设置过期时间的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java定时器只执行一次_面试阿里P6,
- 下一篇: ios realm 文件_iOS Rea