我需要将每个散列中的每个键的所有值重置为0。编写我拥有的脚本,但是它不起作用:
$transaction = $this->redisClient->multi();
try {
$allHashes = transaction->sMembers('all_hashes:')
foreach($allHashes as $hash) {
$keys = $transaction->hKeys($hash);
$resetData = [];
foreach ($keys as $key) {
$resetData[$key] = 0;
}
$transaction->hMSet($hash, $resetData);
}
$transaction->exec();
} catch (RedisException $e) {
$transaction->discard();
}
据我了解,这是行不通的,因为当我们运行exec()
时,所有执行都开始了,它只是发出了第一个命令transaction->sMembers('all_hashes:')
,对于其他命令,没有任何返回值,就像我构建时一样这些重置数组实际上都为空,对吗?以及如何解决它,我应该在这里使用Lua,还是可以通过简单的redis命令以某种方式实现?谢谢!