1

我想基本上像这样使用 Redis,如果它(假设地)接受 SQL:

SELECT id, data, processing_due FROM qtable WHERE processing_due < NOW()

其中processing_due是某种整数时间戳。

然后的想法是也删除已完成的“工作”,例如:

DELETE from qtable WHERE id = $someid

我将在生产(“插入”)和消费(“选择,删除”)端使用哪些 Redis 命令?

我发现 Redis 可以用作队列,但我不希望答案严格按照插入的顺序,而是基于 if "now" is past processing_due

我想这与排行榜的问题几乎相同?

(我试图了解 Redis 的工作原理,从文档中它看起来很简单,但我就是不明白。)

一个体面的解决方案是做ZADD qtable <timestamp> <UUID>然后使用 UUID 作为键来存储 (json) 值吗?

4

1 回答 1

1

您可以使用Sorted Set,其中分数是您的时间(您建议的整数),然后使用ZRANGEBYSCORE进行查询。每个成员都将是您的“字段”的 Json 表示。例如:{id:"1",data:"bla",processing_due:"3198382"}

关于删除,只要找到要删除的相关成员就使用ZREM 。将您的 Json 字符串作为参数传递,就可以了。

一个可能更好的变体是将生成的 ID 作为您的成员,并在单独的String类型的密钥中保存您的 ID 对以及您的数据的 Json 表示。请记住保持两个结构同步。

于 2013-05-21T11:11:58.737 回答