要使用LPUSH
和LTRIM
在redis中创建队列,在python中我这样做:
if not str(key) in r.lrange('myq', 0 , -1):
r.lpush("myq" , key)
r.ltrim("myq" , 0, MYQ_LENGTH)
但是如何在redis队列中存储key:value对?
假设Keys
和Values
可以任何字符串(因此无法使用:
拆分),推送的最佳方法是什么? p>
Key1:Val1
Key2:Val2
Key3:Val3
Key4:Val4
将4个项目排入队列,当第5对被推入队列时,会弹出Key1:VAl1
?
答案 0 :(得分:2)
您可以使用MessagePack或JSON之类的东西对字符串进行编码,并将其推送到列表中。弹出后,在客户端执行匹配解码(或编写服务器端的Lua脚本)。
伪代码示例:
r.lpush("myq", "{\"key1\":\"val1\"}")
...
ele = r.lpop("myq")
hash = JSON.decode(ele)