如何在redis中创建哈希队列?
要在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
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方面也更昂贵。。。这种设计是可以的,也有它的用途,但是考虑到这个问题,我觉得采用序列化的方式更有意义