redis / phpredis, сбросить все счетчики в одной транзакции - PullRequest
0 голосов
/ 10 апреля 2019

Мне нужно сбросить все значения на 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? Спасибо!

...