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

directory search
Cluster cluster addslots(集群 槽位) cluster count failure reports(集群計數(shù)失敗報告) cluster countkeysinslot cluster delslots cluster failover cluster forget cluster getkeysinslot cluster info cluster keyslot(集群鍵槽) cluster meet cluster nodes(集群節(jié)點) 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
characters

EXPIRE key seconds

自1.0.0起可用。

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

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

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

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

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

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

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

Refreshing expires

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

Redis之前的差異2.1.3

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

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

返回值

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

  • 1 如果超時被設(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)航會話

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

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

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

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

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

過期的鑰匙

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

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

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

到期準(zhǔn)確性

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

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

過期和持久

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

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

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

Redis 如何過期密鑰

Redis 密鑰有兩種過期方式:被動方式和主動方式。

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

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

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

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

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

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

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

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

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

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

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

Previous article: Next article: