亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Redis如何設(shè)置過期時(shí)間

 更新時(shí)間:2025年04月23日 08:46:58   作者:zru_9602  
這篇文章主要介紹了Redis如何設(shè)置過期時(shí)間問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Redis設(shè)置過期時(shí)間

在 Redis 中,我們可以為鍵(key)設(shè)置過期時(shí)間,以確保當(dāng)指定的時(shí)間到達(dá)后,該鍵會(huì)自動(dòng)被刪除。

這種機(jī)制對(duì)于需要臨時(shí)存儲(chǔ)數(shù)據(jù)的應(yīng)用場(chǎng)景非常有用,例如緩存、會(huì)話管理等。

1. 基本概念

  • 過期時(shí)間:指一個(gè)鍵在 Redis 中存在的有效時(shí)間,超過這個(gè)時(shí)間后,Redis 會(huì)自動(dòng)刪除該鍵以釋放內(nèi)存。
  • 生存時(shí)間(TTL):表示鍵剩余的存活時(shí)間,可以通過命令獲取和設(shè)置。

2. 設(shè)置過期時(shí)間的方法

Redis 提供了多種命令用于設(shè)置或修改鍵的過期時(shí)間。以下是一些常用的命令:

a. EXPIRE key seconds

功能:為指定的鍵設(shè)置過期時(shí)間,單位是秒。

返回值

  • 如果成功設(shè)置了過期時(shí)間,返回 1
  • 如果鍵不存在,返回 0

示例:

redis> EXPIRE mykey 60
(integer) 1

此命令設(shè)置鍵 mykey 在 60 秒后過期。

b. PXPIRE key milliseconds

功能:為指定的鍵設(shè)置以毫秒為單位的過期時(shí)間。

返回值

  • 如果成功設(shè)置了過期時(shí)間,返回 1。
  • 如果鍵不存在,返回 0

示例:

redis> PXPIRE mykey 5000
(integer) 1

此命令設(shè)置鍵 mykey 在 5000 毫秒(即 5 秒)后過期。

c. EXPIREAT key timestamp

功能:為指定的鍵設(shè)置一個(gè)具體的過期時(shí)間,使用 Unix 時(shí)間戳(從 epoch 開始計(jì)算的秒數(shù))。

返回值

  • 如果成功設(shè)置了過期時(shí)間,返回 1。
  • 如果鍵不存在,返回 0。

示例:

redis> EXPIREAT mykey 1623859200
(integer) 1

此命令設(shè)置鍵 mykey 在 Unix 時(shí)間戳 1623859200(即 2021 年 6 月 14 日 00:00:00 UTC)過期。

d. PEXPIREAT key timestamp milliseconds

功能:與 EXPIREAT 類似,但時(shí)間戳使用毫秒精度。

返回值

  • 如果成功設(shè)置了過期時(shí)間,返回 1
  • 如果鍵不存在,返回 0

示例:

redis> PEXPIREAT mykey 1623859200000
(integer) 1

此命令設(shè)置鍵 mykey 在 Unix 時(shí)間戳 1623859200000(即 2021 年 6 月 14 日 00:00:00 UTC,毫秒精度)過期。

e. 使用 SET 命令設(shè)置過期時(shí)間

  • Redis 的 SET 命令支持在設(shè)置鍵值的同時(shí)指定過期時(shí)間。
  • 可以使用選項(xiàng) EX(以秒為單位)或 PX(以毫秒為單位)來實(shí)現(xiàn)這一點(diǎn)。

示例:

redis> SET mykey "hello" EX 60
OK

redis> SET mykey2 "world" PX 5000
OK
  • 第一個(gè)命令設(shè)置鍵 mykey 的值為 "hello",并在 60 秒后過期。
  • 第二個(gè)命令設(shè)置鍵 mykey2 的值為 "world",并在 5000 毫秒(即 5 秒)后過期。

3. 獲取和修改 TTL

a. TTL key

功能:返回指定鍵的剩余生存時(shí)間(以秒為單位)。

返回值

  • 如果鍵存在并且有設(shè)置過期時(shí)間,返回剩余的秒數(shù)。
  • 如果鍵不存在,返回 -2。
  • 如果鍵存在但沒有設(shè)置過期時(shí)間,返回 -1。

示例:

redis> SET mykey "test" EX 60
OK

redis> TTL mykey
(integer) 58

redis> TTL nonexistkey
(integer) -2

redis> TTL noexpirekey
(integer) -1

b. PTTL key

功能:與 TTL 類似,但返回的是以毫秒為單位的剩余生存時(shí)間。

返回值

  • 如果鍵存在并且有設(shè)置過期時(shí)間,返回剩余的毫秒數(shù)。
  • 如果鍵不存在,返回 -2。
  • 如果鍵存在但沒有設(shè)置過期時(shí)間,返回 -1。

示例:

redis> SET mykey "test" PX 5000
OK

redis> PTTL mykey
(integer) 4837

c. 修改 TTL

  • 可以通過 EXPIRE, PXPIRE, EXPIREAT, 或 PEXPIREAT 命令重新設(shè)置過期時(shí)間,從而修改鍵的剩余生存時(shí)間。

示例:

redis> SET mykey "test" EX 60
OK

redis> TTL mykey
(integer) 58

redis> EXPIRE mykey 30
(integer) 1

redis> TTL mykey
(integer) 29

4. 過期鍵的刪除策略

Redis 使用兩種策略來處理過期的鍵:

a. 惰性刪除(Lazy Deletion)

  • 過期的鍵不會(huì)立即被刪除,而是在下一次訪問該鍵時(shí)進(jìn)行檢查。如果發(fā)現(xiàn)鍵已過期,則會(huì)自動(dòng)刪除它。
  • 優(yōu)點(diǎn):減少了內(nèi)存資源的消耗和 CPU 的使用率,因?yàn)椴恍枰l繁掃描和刪除過期鍵。

b. 積極刪除(Active Deletion)

  • Redis 定期主動(dòng)掃描數(shù)據(jù)庫,尋找已經(jīng)過期的鍵并刪除它們。這種策略有助于避免過多的過期鍵堆積在內(nèi)存中。
  • 優(yōu)點(diǎn):能夠更及時(shí)地釋放內(nèi)存空間,保持較高的性能和穩(wěn)定性。

5. 批量設(shè)置過期時(shí)間

在需要為多個(gè)鍵設(shè)置過期時(shí)間時(shí),可以使用 Redis 的 MULTIEXEC 命令將多個(gè)命令打包執(zhí)行,從而實(shí)現(xiàn)原子性操作。

示例:

redis> MULTI
OK

redis> EXPIRE key1 60
QUEUED

redis> EXPIRE key2 30
QUEUED

redis> EXEC
1) OK
2) OK

6. 注意事項(xiàng)

  • 過期時(shí)間的精度:使用 PXPEXPIREAT 命令時(shí),時(shí)間以毫秒為單位,可以提供更高的精度。
  • 時(shí)間戳的選擇:在使用 EXPIREATPEXPIREAT 時(shí),需要確保提供的 Unix 時(shí)間戳是正確的,并且與當(dāng)前的系統(tǒng)時(shí)間一致。
  • 內(nèi)存和性能的影響:過多設(shè)置過期鍵可能會(huì)增加 Redis 的負(fù)載,特別是在高并發(fā)的情況下。因此,建議合理規(guī)劃過期時(shí)間和 TTL 值,以優(yōu)化資源使用。

總結(jié)

通過上述命令和策略,可以在 Redis 中靈活地設(shè)置、獲取和修改鍵的生存時(shí)間(TTL)。這不僅有助于管理內(nèi)存資源,還能提高應(yīng)用的性能和穩(wěn)定性。

在實(shí)際應(yīng)用中,應(yīng)根據(jù)具體的業(yè)務(wù)需求選擇合適的過期時(shí)間和策略,以實(shí)現(xiàn)最佳的效果。

相關(guān)鏈接:

通過以上內(nèi)容,您可以全面了解如何在 Redis 中設(shè)置和管理鍵的生存時(shí)間。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Redis中鍵值過期操作示例詳解

    Redis中鍵值過期操作示例詳解

    這篇文章主要給大家介紹了關(guān)于Redis中鍵值過期操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Redis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Redis哨兵機(jī)制的使用詳解

    Redis哨兵機(jī)制的使用詳解

    文章講解了Redis哨兵機(jī)制的基本原理、主庫和從庫自動(dòng)切換的過程、如何減少誤判、哨兵集群的組成和通信機(jī)制,以及哨兵在故障發(fā)生時(shí)如何選舉Leader進(jìn)行主從切換
    2025-01-01
  • Redis解決緩存擊穿問題的兩種方法

    Redis解決緩存擊穿問題的兩種方法

    緩存擊穿問題也叫熱點(diǎn)Key問題,就是?個(gè)被高并發(fā)訪問并且緩存重建業(yè)務(wù)較復(fù)雜的key突然失效了,無數(shù)的請(qǐng)求訪問會(huì)在瞬間給數(shù)據(jù)庫帶來巨大的沖擊,本文給大家介紹了Redis解決緩存擊穿問題的兩種方法,需要的朋友可以參考下
    2025-03-03
  • 關(guān)于Redis數(shù)據(jù)庫入門詳細(xì)介紹

    關(guān)于Redis數(shù)據(jù)庫入門詳細(xì)介紹

    大家好,本篇文章主要講的是關(guān)于Redis數(shù)據(jù)庫入門詳細(xì)介紹,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Redis動(dòng)態(tài)字符串SDS的實(shí)現(xiàn)

    Redis動(dòng)態(tài)字符串SDS的實(shí)現(xiàn)

    SDS在Redis中是實(shí)現(xiàn)字符串對(duì)象的工具,本文主要介紹了Redis動(dòng)態(tài)字符串SDS的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11
  • windows上修改redis端口號(hào)的操作步驟

    windows上修改redis端口號(hào)的操作步驟

    redis是一個(gè)開源的內(nèi)存數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)系統(tǒng),常用做數(shù)據(jù)庫、緩存和消息代理,默認(rèn)的端口號(hào)為6379,那么如何在windows上修改redis端口號(hào),接下來本文給大家詳細(xì)介紹了windows上修改redis端口號(hào)的操作方法,需要的朋友可以參考下
    2024-02-02
  • 解決redis-cli報(bào)錯(cuò)Could not connect to Redis at 127.0.0.1:6379: Connection refused

    解決redis-cli報(bào)錯(cuò)Could not connect to Redis&

    這篇文章主要介紹了解決redis-cli報(bào)錯(cuò)Could not connect to Redis at 127.0.0.1:6379: Connection refused,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Redis中跳表的實(shí)現(xiàn)原理分析

    Redis中跳表的實(shí)現(xiàn)原理分析

    Redis中的跳表是一種高效的多層鏈表結(jié)構(gòu),通過隨機(jī)概率算法決定節(jié)點(diǎn)的層數(shù),從而實(shí)現(xiàn)快速的插入、刪除和查詢操作,跳表的平均時(shí)間復(fù)雜度為O(logn),最差情況為O(n),每個(gè)節(jié)點(diǎn)包含值和指向更高層節(jié)點(diǎn)的指針,以及回退指針以提高操作效率
    2025-02-02
  • Redis內(nèi)存碎片產(chǎn)生原因及Pipeline管道原理解析

    Redis內(nèi)存碎片產(chǎn)生原因及Pipeline管道原理解析

    這篇文章主要為大家介紹了Redis內(nèi)存碎片產(chǎn)生原因及Pipeline管道原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Redis批量刪除Key的三種方式小結(jié)

    Redis批量刪除Key的三種方式小結(jié)

    本文主要介紹了Redis批量刪除Key的三種方式小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04

最新評(píng)論