为了通过使用LPUSH
和LTRIM
在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队列中?
假设
Keys
和Values
可以是任何字符串(因此不能使用:
拆分),那么最好的推送方式是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)