如何在redis中创建哈希队列?

如何在redis中创建哈希队列?,redis,queue,Redis,Queue,要在redis中使用LPUSH和LTRIM创建队列,在python中,我是这样做的: if not str(key) in r.lrange('myq', 0 , -1): r.lpush("myq" , key) r.ltrim("myq" , 0, MYQ_LENGTH) 但是如何在redis队列中存储key:value对呢 假设键和值可以是任何字符串(因此不能使用:进行拆分),推送的最佳方式是什么 Key1:Val1 Key2:Val2 Key3:Val3 Key4:Va

要在redis中使用
LPUSH
LTRIM
创建队列,在python中,我是这样做的:

if not str(key) in r.lrange('myq', 0 , -1):
    r.lpush("myq" , key)
    r.ltrim("myq" , 0, MYQ_LENGTH)
但是如何在redis队列中存储key:value对呢

假设
可以是任何字符串(因此不能使用
进行拆分),推送的最佳方式是什么

Key1:Val1
Key2:Val2
Key3:Val3
Key4:Val4

进入队列4项,当第5对被推入队列时,它会弹出
Key1:VAl1

您可以使用MessagePack或JSON之类的东西对字符串进行编码,并将其推入列表。pop时,在客户端执行匹配的解码(或编写一个Lua脚本在服务器端执行)

伪代码示例:

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

根据散列的大小,最好只给它们一个ID,让队列引用散列的ID。是的,但是你必须进行另一次读取,而且在RAM方面也更昂贵。。。这种设计是可以的,也有它的用途,但是考虑到这个问题,我觉得采用序列化的方式更有意义