为了通过使用LPUSHLTRIM在redis中排队,我在python中这样做:

if not str(key) in r.lrange('myq', 0 , -1):
    r.lpush("myq" , key)
    r.ltrim("myq" , 0, MYQ_LENGTH)

但是如何将key:value对存储在redis队列中?

假设KeysValues可以是任何字符串(因此不能使用:拆分),那么最好的推送方式是
Key1:Val1
Key2:Val2
Key3:Val3
Key4:Val4

进入队列4个项目,当第5对放入队列时,它弹出Key1:VAl1

最佳答案

您可以使用MessagePack或JSON之类的字符串进行编码,然后将其推送到列表中。弹出后,在客户端中执行匹配的解码(或编写在服务器端执行的Lua脚本)。

伪代码示例:

r.lpush("myq", "{\"key1\":\"val1\"}")
...
ele = r.lpop("myq")
hash = JSON.decode(ele)

10-08 19:17