国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Redis基本全局命令(含key過(guò)期策略)

這篇具有很好參考價(jià)值的文章主要介紹了Redis基本全局命令(含key過(guò)期策略)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

KEY

返回所有滿?樣式(pattern)的key。?持如下統(tǒng)配樣式。

  • h?llo 匹配 hello , hallo 和 hxllo
  • h*llo 匹配 hllo 和 heeeello
  • h[ae]llo 匹配 hello 和 hallo 但不匹配 hillo
  • h[^e]llo 匹配 hallo , hbllo ,…但不匹配 hello
  • h[a-b]llo 匹配 hallo 和 hbllo

語(yǔ)法:

 KEYS pattern

時(shí)間復(fù)雜度:O(N)

返回值:匹配pattern的所有key。

?例:

redis> MSET firstname Jack lastname Stuntman age 35
"OK"
redis> KEYS *name*
1) "firstname"
2) "lastname"
redis> KEYS a??
1) "age"
redis> KEYS *
1) "age"
2) "firstname"
3) "lastname"
EXISTS

判斷某個(gè)key是否存在。

語(yǔ)法:

 EXISTS key [key ...]

時(shí)間復(fù)雜度:O(1)

返回值:key存在的個(gè)數(shù)。

?例:

redis> SET key1 "Hello"
"OK"
redis> EXISTS key1
(integer) 1
redis> EXISTS nosuchkey
(integer) 0
redis> SET key2 "World"
"OK"
redis> EXISTS key1 key2 nosuchkey
(integer) 2

貼士:一個(gè)exists語(yǔ)句就是一次網(wǎng)絡(luò)請(qǐng)求響應(yīng),因此盡量用一個(gè)exists語(yǔ)句來(lái)判斷多個(gè)key是否存在。

DEL

刪除指定的key。

語(yǔ)法:

 DEL key [key ...]

時(shí)間復(fù)雜度:O(1)

返回值:刪除掉的key的個(gè)數(shù)。

?例:

redis> SET key1 "Hello"
"OK"
redis> SET key2 "World"
"OK"
redis> DEL key1 key2 key3
(integer) 2
EXPIRE

為指定的key添加秒級(jí)的過(guò)期時(shí)間

語(yǔ)法:

EXPIRE key seconds

時(shí)間復(fù)雜度:O(1)

返回值:1表?設(shè)置成功。0表?設(shè)置失敗

實(shí)例:
Redis基本全局命令(含key過(guò)期策略),Redis,redis,junit,數(shù)據(jù)庫(kù)

我們不設(shè)置expire它的默認(rèn)有效期是永久,即ttl后會(huì)返回-1代表永久有效。

TTL

獲取指定key的過(guò)期時(shí)間,秒級(jí)。

語(yǔ)法:

TTL key

時(shí)間復(fù)雜度:O(1)

返回值:剩余過(guò)期時(shí)間。-1表?沒(méi)有關(guān)聯(lián)過(guò)期時(shí)間,-2表?key不存在。

實(shí)例:
Redis基本全局命令(含key過(guò)期策略),Redis,redis,junit,數(shù)據(jù)庫(kù)


EXPIRE和TTL命令都有對(duì)應(yīng)的?持毫秒為單位的版本:PEXPIRE和PTTL


Redis的key過(guò)期策略

一個(gè)redis中可能同時(shí)存在很多很多key. 這些key中可能有很大一部分都有過(guò)期時(shí)間. 此時(shí), redis 服務(wù)器咋知道哪些key已經(jīng)過(guò)期要被刪除,哪些key還沒(méi)過(guò)期??

如果直接遍歷所有的key ,顯然是行不通的.效率非常低~~

過(guò)期策略一般有以下三種:

1,定時(shí)過(guò)期

  • 每個(gè)設(shè)置過(guò)期時(shí)間的key都需要?jiǎng)?chuàng)建一個(gè)定時(shí)器,到過(guò)期時(shí)間就會(huì)立即清除。該策略可以立即清除過(guò)期的數(shù)據(jù),對(duì)內(nèi)存很友好;但是會(huì)占用大量的CPU資源去處理過(guò)期的數(shù)據(jù),從而影響緩存的響應(yīng)時(shí)間和吞吐量。

2,惰性過(guò)期

  • 只有當(dāng)訪問(wèn)一個(gè)key時(shí),才會(huì)判斷該key是否已過(guò)期,過(guò)期則清除。該策略可以最大化地節(jié)省CPU資源,卻對(duì)內(nèi)存非常不友好。極端情況可能出現(xiàn)大量的過(guò)期key沒(méi)有再次被訪問(wèn),從而不會(huì)被清除,占用大量?jī)?nèi)存。

3,定期過(guò)期

  • 每隔一定的時(shí)間,會(huì)掃描一定數(shù)量的數(shù)據(jù)庫(kù)的expires字典中一定數(shù)量的key,并清除其中已過(guò)期的key。該策略是前兩者的一個(gè)折中方案。通過(guò)調(diào)整定時(shí)掃描的時(shí)間間隔和每次掃描的限定耗時(shí),可以在不同情況下使得CPU和內(nèi)存資源達(dá)到最優(yōu)的平衡效果。

Redis中同時(shí)使用了惰性過(guò)期和定期過(guò)期兩種過(guò)期策略。

Redis過(guò)期刪除采用的是定期刪除,默認(rèn)是每100ms檢測(cè)一次,遇到過(guò)期的key則進(jìn)行刪除,這里的檢測(cè)并不是順序檢測(cè),而是隨機(jī)檢測(cè)。那這樣會(huì)不會(huì)有漏網(wǎng)之魚(yú)?顯然Redis也考慮到了這一點(diǎn),當(dāng)我們?nèi)プx/寫(xiě)一個(gè)已經(jīng)過(guò)期的key時(shí),會(huì)觸發(fā)Redis的惰性刪除策略,直接會(huì)干掉過(guò)期的key。

為什么不用定時(shí)刪除策略?

定時(shí)刪除,用一個(gè)定時(shí)器來(lái)負(fù)責(zé)監(jiān)視key,過(guò)期則自動(dòng)刪除。雖然內(nèi)存及時(shí)釋放,但是十分消耗CPU資源。在大并發(fā)請(qǐng)求下,CPU要將時(shí)間應(yīng)用在處理請(qǐng)求,而不是刪除key,因此沒(méi)有采用這一策略.

定期刪除+惰性刪除是如何工作的呢?

定期刪除:redis默認(rèn)每個(gè)100ms檢查,是否有過(guò)期的key,有過(guò)期key則刪除。需要說(shuō)明的是,redis不是每個(gè)100ms將所有的key檢查一次,而是隨機(jī)抽取進(jìn)行檢查(如果每隔100ms,全部key進(jìn)行檢查,redis豈不是卡死)。因此,如果只采用定期刪除策略,會(huì)導(dǎo)致很多key到時(shí)間沒(méi)有刪除。

于是,惰性刪除派上用場(chǎng)。也就是說(shuō)在你獲取某個(gè)key的時(shí)候,redis會(huì)檢查一下,這個(gè)key如果設(shè)置了過(guò)期時(shí)間那么是否過(guò)期了?如果過(guò)期了此時(shí)就會(huì)刪除。

采用定期刪除+惰性刪除就沒(méi)其他問(wèn)題了么?

不是的,如果定期刪除沒(méi)刪除key,然后你也沒(méi)即時(shí)去請(qǐng)求key,也就是說(shuō)惰性刪除也沒(méi)生效。這樣,redis的內(nèi)存會(huì)越來(lái)越高。那么就應(yīng)該采用內(nèi)存淘汰機(jī)制。


緩存淘汰 eviction

Redis自身實(shí)現(xiàn)了緩存淘汰

Redis的內(nèi)存淘汰策略是指在Redis的用于緩存的內(nèi)存不足時(shí),怎么處理需要新寫(xiě)入且需要申請(qǐng)額外空間的數(shù)據(jù)。

  • noeviction:當(dāng)內(nèi)存不足以容納新寫(xiě)入數(shù)據(jù)時(shí),新寫(xiě)入操作會(huì)報(bào)錯(cuò)。
  • allkeys-lru:當(dāng)內(nèi)存不足以容納新寫(xiě)入數(shù)據(jù)時(shí),在鍵空間中,移除最近最少使用的key。
  • allkeys-random:當(dāng)內(nèi)存不足以容納新寫(xiě)入數(shù)據(jù)時(shí),在鍵空間中,隨機(jī)移除某個(gè)key。
  • volatile-lru:當(dāng)內(nèi)存不足以容納新寫(xiě)入數(shù)據(jù)時(shí),在設(shè)置了過(guò)期時(shí)間的鍵空間中,移除最近最少使用的key。
  • volatile-random:當(dāng)內(nèi)存不足以容納新寫(xiě)入數(shù)據(jù)時(shí),在設(shè)置了過(guò)期時(shí)間的鍵空間中,隨機(jī)移除某個(gè)key。
  • volatile-ttl:當(dāng)內(nèi)存不足以容納新寫(xiě)入數(shù)據(jù)時(shí),在設(shè)置了過(guò)期時(shí)間的鍵空間中,有更早過(guò)期時(shí)間的key優(yōu)先移除。
  • redis 4.x 后支持LFU策略,最少頻率使用,allkeys-lfu,volatile-lfu

TYPE

返回key對(duì)應(yīng)value的數(shù)據(jù)類型。

語(yǔ)法:

TYPE key

時(shí)間復(fù)雜度:O(1)

返回值: none ,string , list , set ,zset ,hash and stream。

redis> SET key1 "value"
"OK"
redis> LPUSH key2 "value"
(integer) 1
redis> SADD key3 "value"
(integer) 1
redis> TYPE key1
"string"
redis> TYPE key2
"list"
redis> TYPE key3
"set"

the end!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-551593.html

到了這里,關(guān)于Redis基本全局命令(含key過(guò)期策略)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • redis的Key的過(guò)期策略是如何實(shí)現(xiàn)的?

    Key的過(guò)期策略 一個(gè)redis中可能同時(shí)存在很多很多key,這些key可能有很大一部分都有過(guò)期時(shí)間,此時(shí),redis服務(wù)器咋知道哪些key已經(jīng)過(guò)期要被刪除,哪些key還沒(méi)有過(guò)期? 如果直接遍歷所有的key,顯然是行不通的,效率極低! Redis的Key有3種過(guò)期刪除策略,具體如下: 原理 :在設(shè)

    2024年02月13日
    瀏覽(22)
  • 【Redis】Redis 通用命令、鍵的過(guò)期策略

    【Redis】Redis 通用命令、鍵的過(guò)期策略

    Redis 有許多種數(shù)據(jù)結(jié)構(gòu),但是這些數(shù)據(jù)結(jié)構(gòu)的 key 的類型都是字符串類型的(所以說(shuō),Redis 不同的數(shù)據(jù)結(jié)構(gòu)都是針對(duì)于 value 而言的)。正因如此,對(duì)應(yīng)相同類型的 key 來(lái)說(shuō),就有一些通用的來(lái)操作 Redis 的命令。 SET 和 GET 可以說(shuō)是 Redis 中最基礎(chǔ)也是最核心的兩個(gè)命令了,Redi

    2024年02月09日
    瀏覽(22)
  • Redis(概述、應(yīng)用場(chǎng)景、線程模式、數(shù)據(jù)持久化、數(shù)據(jù)一致、事務(wù)、集群、哨兵、key過(guò)期策略、緩存穿透、擊穿、雪崩)

    Redis(概述、應(yīng)用場(chǎng)景、線程模式、數(shù)據(jù)持久化、數(shù)據(jù)一致、事務(wù)、集群、哨兵、key過(guò)期策略、緩存穿透、擊穿、雪崩)

    目錄 Redis概述 應(yīng)用場(chǎng)景 Redis的線程模式 數(shù)據(jù)持久化 1.Rdb(Redis DataBase) 2.Aof(Append Only File) mysql與redis保持?jǐn)?shù)據(jù)一致 redis事務(wù) 主從復(fù)制(Redis集群) 哨兵模式 key過(guò)期策略 緩存穿透、擊穿、雪崩 1.緩存穿透:緩存中沒(méi)有,在mysql中也沒(méi)有 2.緩存擊穿:數(shù)據(jù)在數(shù)據(jù)庫(kù)中存在,某個(gè)

    2024年01月16日
    瀏覽(37)
  • springboot監(jiān)聽(tīng)Redis 緩存過(guò)期(Key 失效)事件

    事件通過(guò) Redis 的訂閱與發(fā)布功能(pub/sub)來(lái)進(jìn)行分發(fā), 故需要開(kāi)啟 redis 的事件監(jiān)聽(tīng)與發(fā)布 修改 redis.conf 文件(Windows上是redis.windows.conf和redis.windows-service.conf) 通過(guò)開(kāi)啟key過(guò)期的事件通知,當(dāng)key過(guò)期時(shí),會(huì)發(fā)布過(guò)期事件;我們定義key過(guò)期事件的監(jiān)聽(tīng)器,當(dāng)key過(guò)期時(shí),就能收到

    2024年02月12日
    瀏覽(25)
  • Redis-監(jiān)聽(tīng)過(guò)期key-JAVA實(shí)現(xiàn)方案

    Redis-監(jiān)聽(tīng)過(guò)期key-JAVA實(shí)現(xiàn)方案

    一、創(chuàng)建監(jiān)聽(tīng)配置類? RedisListenerConfig。 二、 創(chuàng)建監(jiān)聽(tīng)器: RedisKeyExpirationListener 繼承? KeyExpirationEventMessageListener . 這里只能獲取到 過(guò)期的key,無(wú)法獲取過(guò)期的value.? 三: 設(shè)置redis的配置文件redis.config中的? notify-keyspace-events 為 Ex? 四、驗(yàn)證一下: ? ? ? ? ? 在redis客戶端執(zhí)行

    2024年02月11日
    瀏覽(19)
  • Redis過(guò)期策略

    Redis過(guò)期策略

    Redis 使用的過(guò)期刪除策略是什么? Redis 是可以對(duì) key 設(shè)置過(guò)期時(shí)間的,因此需要有相應(yīng)的機(jī)制將已過(guò)期的鍵值對(duì)刪除,而做這個(gè)工作的就是過(guò)期鍵值刪除策略。 每當(dāng)我們對(duì)一個(gè) key 設(shè)置了過(guò)期時(shí)間時(shí),Redis 會(huì)把該 key 帶上過(guò)期時(shí)間存儲(chǔ)到一個(gè) 過(guò)期字典 (expires dict)中,也就是

    2024年02月09日
    瀏覽(19)
  • Redis的過(guò)期策略

    Redis 支持的過(guò)期策略主要有以下幾種: 定時(shí)過(guò)期(Timed Expiration) 這種策略會(huì)在設(shè)置鍵的過(guò)期時(shí)間時(shí),創(chuàng)建一個(gè)定時(shí)器,當(dāng)達(dá)到指定的過(guò)期時(shí)間點(diǎn)時(shí),立即執(zhí)行刪除操作。 這種方式可以精確控制鍵的生命周期,但是如果有大量的鍵都設(shè)置了過(guò)期時(shí)間,會(huì)創(chuàng)建大量的定時(shí)器,對(duì)系

    2024年01月19日
    瀏覽(19)
  • Redis - 數(shù)據(jù)過(guò)期策略

    Redis提供了兩種數(shù)據(jù)過(guò)期策略 惰性刪除 和 定期刪除 當(dāng)某個(gè)key過(guò)期時(shí),不馬上刪除,而是在調(diào)用時(shí),再判斷它是否過(guò)期,如果過(guò)期再刪除它 優(yōu)點(diǎn) : 對(duì)CPU友好,對(duì)于很多用不到的key,不用浪費(fèi)時(shí)間進(jìn)行過(guò)期檢查 缺點(diǎn) : 對(duì)內(nèi)存不友好,如果某個(gè)key過(guò)期了,但一直沒(méi)使用,那么

    2024年02月14日
    瀏覽(26)
  • Redis的緩存過(guò)期淘汰策略

    Redis的緩存過(guò)期淘汰策略

    生產(chǎn)上你們r(jià)edis內(nèi)存設(shè)置多少? 如何配置,修改redis的內(nèi)存大?。?如果內(nèi)存滿了怎么辦? redis清理內(nèi)存的方式?定期刪除和惰性刪除了解過(guò)嗎? redis緩存淘汰策略有哪些?分別是什么?你用哪個(gè)? redis的LRU了解過(guò)嗎?請(qǐng)手寫(xiě)LRU。 LRU和LFU算法的區(qū)別是什么? … 如何查看Redis最

    2024年02月07日
    瀏覽(23)
  • Redis過(guò)期數(shù)據(jù)的刪除策略

    Redis過(guò)期數(shù)據(jù)的刪除策略

    目錄 1 介紹 2 Redis緩存過(guò)期命令 3 兩種過(guò)期數(shù)據(jù)的刪除方式 3.1 惰性刪除 3.2 定期刪除 Redis 是一個(gè)kv型數(shù)據(jù)庫(kù),我們所有的數(shù)據(jù)都是存放在內(nèi)存中的,但是內(nèi)存是有大小限制的,不可能無(wú)限制的增量。 想要把不需要的數(shù)據(jù)清理掉,一種辦法是直接刪除,這個(gè)咱們前面章節(jié)有詳細(xì)

    2024年02月11日
    瀏覽(20)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包