雷迪斯 : Querying based on matching key pattren

标签 redis

我是 Redis 的新手,我试图通过 Redis 文档找出这个问题,但没有成功。这是详细信息。

假设我插入了如下字符串。

Set category:1 "Men"
Set category:2 "Women"
Set category:3 "Kids"
Set category:4 "Home"
Set category:5 "shoes" ...

在这种情况下,我想通过查询遵循特定模式的键来获取所有值 category:*

Get category:*

有没有办法像这样获取所有类别?

最佳答案

使用SCAN . SCAN 是遍历 Redis 数据库中的键的唯一安全方法。 SCAN 将分块键空间的一部分并返回一个游标(总是第一个结果)和它在该 block 中找到的任何值。您从光标 0 开始。

> SCAN 0 MATCH "category:*"
1) "1904"
2) (empty list or set)

然后以相同的模式将该光标传递回 SCAN 命令:

> SCAN 1904 MATCH "category:*"
1) "0"
2) 1) "category:3"
   2) "category:2"
   3) "category:4"
   4) "category:1"

在这种情况下,返回的光标是 0,这是 SCAN 命令已完成的信号。第二个响应是一个包含找到的键的数组。请注意,您需要循环运行 SCAN 命令,并且每次都不会返回与模式匹配的键或仅返回部分键。

获取键后,您需要像往常一样检索值 (GET)。

请注意:从您的数据结构来看,您可能使用了不合适的数据类型:将类别组织成散列会更好(例如 HSET 类别1 人 然后你可以使用 HGETALL)

关于雷迪斯 : Querying based on matching key pattren,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48160030/

相关文章:

amazon-web-services - AWS ElastiCache Redis 是否有明显的网络延迟?

asp.net - 增加计数器但随着延迟减少

Redis Sentinel 从从服务器读取

PHP fatal error : Uncaught exception 'CredisException' with message 'Lost connection to Redis server

mysql - 给定用例的最佳 MySQL 表模式

redis - Redis中使用RDB+AOF混合持久化时如何自动flush appendonly.aof?

.net - 重启系统后Redis密码丢失

node.js - 在 Redis (NodeJS) 中存储 WebM 文件

redis - Redis Replication 是否有助于负载平衡?

redis - zrange 中的字典顺序选项?