簡體   English   中英

在 Redis 的單個命令中使用帶有 TTL 的 RPUSH

[英]Using RPUSH with TTL in a single command in Redis

我正在嘗試在 Redis 的列表中推送一個條目,並且還想在每次有新條目進入時更新列表的 TTL。我可以使用 Redis 簡單地調用 EXPIRE“my-list”ttl。 由於我的應用程序正在接收大量流量,因此我想減少對 redis 的調用次數。

我可以在 Redis 的推送操作期間設置我的 TTL,即 RPUSH "mylist" I1 I2...IN ex "TTL",redis 是否支持這次的命令功能。 我可以看到它確實支持 String 數據結構。

Redis 沒有專門的命令來推送和過期列表,盡管正如您所提到的,它確實有類似 String 數據類型的命令。

您應對這一挑戰的方法是從現有的“命令”中組合出您自己的“命令”。 但是,您無需讓應用程序調用這些命令,而是按照EVAL文檔頁面中的說明使用 Lua 腳本。

Lua 腳本被緩存並在服務器上自動運行。 像下面這樣的可能對您的情況有所幫助 - 它期望獲得鍵名、推送元素和到期值:

local reply = redis.call('RPUSH', KEYS[1], ARGV[1])
redis.call('EXPIRE', KEYS[1], ARGV[2])
return reply

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM