redis - 给出 Redis 中特定位置的所有条目

标签 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 中是可能的吗?

最佳答案

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

您可能想改用排序集(请参阅 Zxxx commands ),并仅使用时间戳作为分数。

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

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

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

关于redis - 给出 Redis 中特定位置的所有条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30525296/

相关文章:

python - 使用 txredisapi 建立连接后订阅和取消订阅 channel

performance - HMGET 以及字段数量和阅读性能之间的相关性

redis - 使用 libcurl 根据关键字从 redis 数据结构中获取记录作为数据库。

angularjs - 如何将 Redis 与 loopback-MongoDB 一起使用

ruby-on-rails - Ruby 救援没有捕捉到 StandardError

asp.net-core - 在 .NET Core 2 中存储和检索 IDistributedCache (Redis) 中的值

redis - 如何使用redis作为partial LRU?

node.js - Node 无法通过 Docker Compose 连接到 Redis

javascript - Node.js:Redis 安全说明

java - 使用 Lettuce 响应式(Reactive)命令订阅 Redis channel (pubsub)