从Redis中的特定位置提供所有条目

时间:2015-05-29 08:55:22

标签: redis

我有以下表格:

| 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中的命令还是这个?

1 个答案:

答案 0 :(得分:2)

如果您使用正确的数据结构,这是可行的。在您的示例中,您使用了哈希对象,该哈希对象不按有序方式存储项目。

您可能希望使用排序集(请参阅Zxxx commands),并将时间戳用作分数。

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

要查找时间戳大于或等于特定值的记录,您可以使用ZRANGEBYSCORE

#  WHERE timestamp >= 1432888693
ZRANGEBYSCORE muster 1432888693 +inf WITHSCORES