我正在处理的应用程序之一已从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));
}
}
现在,这将返回上述错误。是否有其他方法可以获取此指定名称空间下的所有数据?
答案 0 :(得分:0)
警告:将KEYS视为仅应格外小心的生产环境中使用的命令。在大型数据库上执行时,可能会破坏性能。此命令用于调试和特殊操作,例如更改键空间布局。不要在常规应用程序代码中使用KEYS。如果您正在寻找在密钥空间的子集中查找密钥的方法,请考虑使用SCAN或集。
如果您使用的是predis
,则可以在此example中这样做:
foreach (new Iterator\Keyspace($this->redis, 'parent:child:*') as $key) {
$cacheData[] = json_decode($this->redis->get($key));
}