我有下表:

| timestamp  | user   | count |
|------------|--------|-------|
| 1432888700 | muster | 2     |
| 1432888699 | muster | 1     |
| 1432888693 | muster | 2     | <-- position
| 1432888692 | muster | 1     |

在Redis中,我可以使用以下命令添加此值:
hset muster 1432888692 1
hset muster 1432888693 2
hset muster 1432888699 1

所有条目均按时间戳排序。现在,我要输出特定位置的所有条目。例如在SQL语法中:
SELECT * FROM muster WHERE timestamp >= 1432888693

我真的没有在redis中找到指定的命令来做到这一点。您是否知道该命令,或者这在Redis中是完全可能的?

最佳答案

只要您使用正确的数据结构,这是可能的。在您的示例中,您使用了一个哈希对象,该对象不以有序方式存储项目。

您可能要使用排序集(请参阅Zxxx commands),而仅将时间戳记为得分。

ZADD muster 1432888692 1
ZADD muster 1432888693 2
ZADD muster 1432888699 1

要查找时间戳大于或等于特定值的记录,可以使用ZRANGEBYSCORE:
#  WHERE timestamp >= 1432888693
ZRANGEBYSCORE muster 1432888693 +inf WITHSCORES

09-25 17:39