亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄 搜索
Cluster cluster addslots(集群 槽位) cluster count failure reports(集群計(jì)數(shù)失敗報(bào)告) cluster countkeysinslot cluster delslots cluster failover cluster forget cluster getkeysinslot cluster info cluster keyslot(集群鍵槽) cluster meet cluster nodes(集群節(jié)點(diǎn)) cluster replicate(集群復(fù)制) cluster reset(集群重置) cluster saveconfig cluster set config epoch cluster setslot cluster slaves cluster slots readonly readwrite Connection auth echo ping quit select swapdb Geo geoadd geodist geohash geopos georadius georadiusbymember Hashes hdel hexists hget hgetall hincrby hincrbyfloat hkeys hlen hmget hmset hscan hset hsetnx hstrlen hvals HyperLogLog pfadd pfcount pfmerge Keys del dump exists expire expireat keys migrate move object persist pexpire pexpireat pttl randomkey rename renamenx restore scan sort touch ttl type unlink wait Lists blpop brpop brpoplpush lindex linsert llen lpop lpush lpushx lrange lrem lset ltrim rpop rpoplpush rpush rpushx Pub/Sub psubscribe publish pubsub punsubscribe subscribe unsubscribe Scripting eval evalsha script debug script exists script flush script kill script load Server bgrewriteaof bgsave client getname client kill client list client pause client reply client setname command command count command getkeys command info config get config resetstat config rewrite config set dbsize debug object debug segfault flushall flushdb info lastsave monitor role save shutdown slaveof slowlog time Sets sadd scard sdiff sdiffstore sinter sinterstore sismember smembers smove spop srandmember srem sscan sunion sunionstore Sorted Sets zadd zcard zcount zincrby zinterstore zlexcount zrange zrangebylex zrangebyscore zrank zrem zremrangebylex zremrangebyrank zremrangebyscore zrevrange zrevrangebylex zrevrangebyscore zrevrank zscan zscore zunionstore Strings append bitcount bitfield bitop bitpos decr decrby get getbit getrange getset incr incrby incrbyfloat mget mset msetnx psetex set setbit setex setnx setrange strlen Transactions discard exec multi unwatch watch
文字

EXPIRE key seconds

自1.0.0起可用。

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

設(shè)置超時(shí)key。超時(shí)過期后,密鑰將自動(dòng)刪除。在 Redis 術(shù)語中,有關(guān)聯(lián)超時(shí)的密鑰通常被認(rèn)為是不穩(wěn)定的。

超時(shí)只能通過刪除或覆蓋密鑰內(nèi)容的命令清除,包括 DEL,SET,GETSET 和所有*STORE命令。這意味著所有在概念上改變存儲(chǔ)在密鑰中的值而不用新密鑰替換的操作都會(huì)使超時(shí)保持不變。例如,使用 INCR 增加一個(gè)鍵的值,用 LPUSH 將一個(gè)新值推入一個(gè)列表,或者用 HSET 改變一個(gè)散列的字段值都是會(huì)使超時(shí)保持不變的操作。

超時(shí)也可以被清除,使用 PERSIST 命令將密鑰恢復(fù)為持久密鑰。

如果使用 RENAME 重命名密鑰,則相關(guān)的生存時(shí)間將轉(zhuǎn)移到新的密鑰名稱。

如果某個(gè)密鑰被 RENAME 覆蓋,就像現(xiàn)有密鑰Key_A被類似的調(diào)用覆蓋的情況一樣RENAME Key_B Key_A,原始的密碼是否與Key_A超時(shí)相關(guān)并不重要,新密鑰Key_A將繼承所有的特性Key_B。

請(qǐng)注意,以非積極的超時(shí)或 EXPIREAT / PEXPIREAT 調(diào)用帶有過去時(shí)間的 EXPIRE / PEXPIRE 將導(dǎo)致密鑰被刪除而不是過期(相應(yīng)地,發(fā)出的關(guān)鍵事件將del不會(huì)expired)。

Refreshing expires

可以使用一個(gè)已經(jīng)存在過期集的鍵作為參數(shù)來調(diào)用 EXPIRE。在這種情況下,密鑰的生存時(shí)間會(huì)更新為新值。有很多有用的應(yīng)用程序,下面的導(dǎo)航會(huì)話模式部分介紹了一個(gè)示例。

Redis之前的差異2.1.3

2.1.3之前的 Redis 版本中,使用改變其值的命令更改具有過期集合的密鑰具有完全移除密鑰的效果。這種語義是需要的,因?yàn)楝F(xiàn)在已經(jīng)修復(fù)了復(fù)制層的限制。

EXPIRE 將返回0,并且不會(huì)更改設(shè)置了超時(shí)的密鑰的超時(shí)。

返回值

整數(shù)回復(fù),具體為:

  • 1 如果超時(shí)被設(shè)置。

  • 0如果key不存在。

例子

redis>  SET mykey "Hello" "OK" 

redis>  EXPIRE mykey 10 (integer) 1 

redis>  TTL mykey (integer) 10 

redis>  SET mykey "Hello World" "OK" 

redis>  TTL mykey (integer) -1

模式:導(dǎo)航會(huì)話

想象一下你有一個(gè)網(wǎng)絡(luò)服務(wù),并且你對(duì)用戶最近訪問過的最近N個(gè)網(wǎng)頁感興趣,這樣每個(gè)相鄰的網(wǎng)頁瀏覽都不會(huì)在前一個(gè)網(wǎng)頁中執(zhí)行超過60秒。從概念上講,您可以將這組頁面視為用戶的導(dǎo)航會(huì)話,可能包含有關(guān)他或她當(dāng)前正在查找的產(chǎn)品的有趣信息,以便推薦相關(guān)產(chǎn)品。

您可以使用以下策略輕松在 Redis 中對(duì)此模式進(jìn)行建模:每次用戶執(zhí)行頁面視圖時(shí),都會(huì)調(diào)用以下命令:

MULTI
RPUSH pagewviews.user:<userid> http://.....EXPIRE pagewviews.user:<userid> 60EXEC

如果用戶空閑時(shí)間超過60秒,則該鍵將被刪除,并且只有小于60秒的后續(xù)頁面查看才會(huì)被記錄下來。

這種模式很容易修改為使用 INCR 而不是使用 RPUSH 的列表。

過期的鑰匙

通常情況下,Redis 密鑰創(chuàng)建時(shí)沒有關(guān)聯(lián)的生存時(shí)間。除非用戶以明確的方式刪除密鑰,例如使用 DEL 命令,否則密鑰將永遠(yuǎn)存在。

EXPIRE 系列命令能夠?qū)⑦^期與給定密鑰相關(guān)聯(lián),但需要使用密鑰所使用的一些額外內(nèi)存。當(dāng)密鑰設(shè)置過期時(shí),Redis 將確保在指定的時(shí)間量過去時(shí)移除密鑰。

使用 EXPIRE 和 PERSIST 命令(或其他嚴(yán)格相關(guān)的命令)可以更新或完全刪除生存的關(guān)鍵時(shí)刻。

到期準(zhǔn)確性

在 Redis 2.4中,expire 可能不是精確的,它可能在0到1秒之間。

由于 Redis 2.6 的過期錯(cuò)誤是從0到1毫秒。

過期和持久

密鑰過期信息存儲(chǔ)為絕對(duì) Unix 時(shí)間戳(Redis 版本2.6或更高版本以毫秒為單位)。這意味著即使 Redis 實(shí)例未處于活動(dòng)狀態(tài),時(shí)間仍在流動(dòng)。

為了過期工作,電腦的時(shí)間必須保持穩(wěn)定。如果您從兩臺(tái)計(jì)算機(jī)中移動(dòng)一個(gè)RDB文件并在其時(shí)鐘中執(zhí)行大的異步操作,可能會(huì)發(fā)生有趣的事情(例如加載時(shí)所有加載的密鑰都會(huì)過期)。

即使正在運(yùn)行的實(shí)例也會(huì)檢查計(jì)算機(jī)時(shí)鐘,因此,例如,如果您設(shè)置的密鑰的生存時(shí)間為1000秒,然后將計(jì)算機(jī)的時(shí)間設(shè)置為將來2000秒,密鑰將立即過期,而不是持續(xù)1000秒。

Redis 如何過期密鑰

Redis 密鑰有兩種過期方式:被動(dòng)方式和主動(dòng)方式。

當(dāng)某個(gè)客戶端試圖訪問密鑰時(shí),密鑰被動(dòng)地過期,并且發(fā)現(xiàn)密鑰超時(shí)。

當(dāng)然這還不夠,因?yàn)橛羞^期的密鑰永遠(yuǎn)不會(huì)被再次訪問。無論如何,這些密鑰應(yīng)該過期,因此 Redis 會(huì)定期在密鑰中隨機(jī)測(cè)試幾個(gè)密鑰并設(shè)置過期。所有已過期的密鑰都將從密鑰空間中刪除。

具體來說,這是 Redis 每秒執(zhí)行10次的操作:

  1. 從關(guān)鍵集合中檢測(cè)20個(gè)隨機(jī)關(guān)鍵字并帶有關(guān)聯(lián)的過期。

  1. 刪除所有過期的密鑰。

  1. 如果超過25%的密鑰過期,請(qǐng)從第1步重新開始。

這是一個(gè)微不足道的概率算法,基本上假設(shè)是我們的樣本代表了整個(gè)密鑰空間,并且我們繼續(xù)過期直到可能過期的密鑰的百分比低于25%

這意味著在任何給定時(shí)刻,已經(jīng)過期的使用存儲(chǔ)器的最大密鑰數(shù)量最多等于每秒寫入操作的最大數(shù)量除以4。

如何在復(fù)制鏈接和AOF文件中處理過期

為了在不犧牲一致性的情況下獲得正確的行為,當(dāng)密鑰過期時(shí),將在 AOF 文件中合成一個(gè) DEL 操作并獲取所有連接的從站。這樣,到期過程集中在主實(shí)例中,并且不存在一致性錯(cuò)誤的可能性。

然而,雖然連接到主服務(wù)器的從服務(wù)器不會(huì)獨(dú)立使用密鑰(但會(huì)等待來自主服務(wù)器的 DEL),但它們?nèi)詴?huì)采用數(shù)據(jù)集中存在的已滿過期的完整狀態(tài),因此,當(dāng)從服務(wù)器選擇為掌握它將能夠獨(dú)立過期,完全充當(dāng)主人。

上一篇: 下一篇: