php - 无法将“KEYS”与 redis-cluster 一起使用
问题描述
我最近正在处理的应用程序之一redis
从redis cluster
. 现在我一直在使用该keys
命令来获取一个键空间下的所有键。但现在它在说Cannot use 'KEYS' with redis-cluster
。用 Laravel 编写的应用程序,我Predis
用作 redis 客户端。
我在 redis 中存储了一个树响应,它位于parent:child:ItemID
格式的命名空间下。所以我有类似的条目
parent:child:1
parent:child:2
parent:child:3
并且这些键中的每一个都有与之关联的 JSON。我正在获取每个通过键循环的 JSON 条目。代码如下:
$keys = $this->redis->keys('parent:child:*');
if (!empty($keys)) {
foreach ($keys as $key) {
$cacheData[] = json_decode($this->redis->get($key));
}
}
现在这是返回上述错误。有没有其他方法可以获取此指定命名空间下的所有数据?
解决方案
来自Redis官方文档
警告:将 KEYS 视为只能在生产环境中极其小心地使用的命令。当它针对大型数据库执行时,它可能会破坏性能。此命令用于调试和特殊操作,例如更改键空间布局。不要在常规应用程序代码中使用 KEYS。如果您正在寻找一种在键空间子集中查找键的方法,请考虑使用 SCAN 或集合。
如果您正在使用predis
,您可以在此示例中执行以下操作:
foreach (new Iterator\Keyspace($this->redis, 'parent:child:*') as $key) {
$cacheData[] = json_decode($this->redis->get($key));
}
推荐阅读
- c++ - VS Code下划线#include在cpp中
- javascript - 从对象键值对中的键获取值
- python - Pandas 将数据帧转换为字典,数据帧中的唯一键为 (index,col)
- c# - AutoMapper 在对象列表中映射嵌套的对象列表
- python - 如何获取当前在语音频道中的人员列表 - discord.py
- python - 为什么这个 Python 程序的运行速度比我预期的要慢?
- javascript - React Fetch 从 Express 后端返回错误的路由
- sql - 删除数据库中超出 subject_id 特定日期范围的行
- dax - dax中单元格值为0时重置的累积和
- reverse-engineering - 从进程中读取数据(游戏)