我正在使用 PHPRedis为此。
我需要创建脚本,将模式为 mobile*
的所有 key 从一个 Redis host1 复制到 host2。
我通过从 host1 中选择所有具有模式 mobile*
的 key 来实现这一点。然后使用 get
键方法遍历每个键以返回数据。然后,我使用 set
方法为 host2 设置 key :
$auKeys = $redis->keys("mobile*");
foreach ($auKeys as $key) {
$data = $redis->get($key);
$redis2->set($key, $data, 6000);
echo $key;
}
问题是这大约需要 5 分钟 - 我需要将其缩短到 2-3 分钟。还有其他方法吗?
最佳答案
SET
的最简单途径是PIPE
键并点击redis 服务器一次以执行所有它们,而不是一次旅行/键。
https://github.com/phpredis/phpredis/issues/251
$pipeline = $redis->multi($host, Redis::PIPELINE);
//put result in our shared list
foreach ($items as $item) {
$pipeline->sAdd($key, $item);
}
$ret = $pipeline->exec();
与此同时,如果您正在寻找一种不同的方式将命令转换为 Redis Protocol,也可以使用库.
关于php - 使用 PHP 从 Redis 中选择特定模式的所有关键数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36357184/