我想使用Redis,如果它(假设)接受SQL:
SELECT id, data, processing_due FROM qtable WHERE processing_due < NOW()
其中processing_due
是某种整数时间戳。
然后,我们的想法是删除已完成的“工作”,例如:
DELETE from qtable WHERE id = $someid
我会在制作(“插入”)和消费(“选择,删除”)结束时使用哪些Redis命令?
我发现Redis可以用作队列,但我不希望答案严格按插入顺序排列,而是基于“now”是否超过processing_due
。
我认为这与排行榜几乎相同?
(我试图了解Redis的工作方式,从文档中看起来很简单,但我只是不明白。)
一个不错的解决方案是{I} {},然后使用UUID作为键来存储(json)值吗?
答案 0 :(得分:1)
您可以使用Sorted Set,其中得分是您的时间(您建议的整数),然后使用ZRANGEBYSCORE进行查询。每个成员都是您“领域”的Json表示。例如:{id:"1",data:"bla",processing_due:"3198382"}
关于删除,只需在找到要删除的相关成员时使用ZREM。传递你的Json字符串作为参数,你没事。
一个可能更好的变体是将生成的ID保存为您的成员,并在单独的 String - 类型键中保存ID对以及数据的Json表示。请记住保持两个结构同步。