Представил
Потребности не будут вдаваться в подробности, предположительно, вы столкнулись с необходимостью использовать сценарии блокировки данных. Посмотрите на некоторую информацию и другой код, измените запись.
SETNX
Основной принцип заключается в использовании команды Redis SETNX.
возьмите ключ Установите значение в значение Если и только если ключ Не существует.
Если дано ключ Если он уже существует, SETNX ничего не делает.
SET NX-это сокращение от “УСТАНОВИТЬ, если он не существует” (УСТАНОВИТЬ, если он не существует).
Возвращаемое значение:
Настройка выполнена успешно, возврат 1 。
Сбой настройки, возврат 0 。
Когда установка завершается неудачно, это указывает на то, что блокировка используется. В течение определенного периода времени цикл запрашивает, пока текущая блокировка не будет снята, а затем блокировка будет получена.
Пример
php Include'redis.php'; // The method of connecting Redis in the previous article $redis = getRedis(); function redisLock() { $redis = getRedis(); $redisKey = 'redisKey'; $redisValue = time(); for ($i = 0; $i < 150; $i++) { $flag = $redis->setnx($redisKey, $redisValue); if (!$flag) { // Acquisition lock failed usleep(200000); continue; } // Operate here and release the lock after the operation is completed. $redis->del($redisKey); return true; } // Deadlock prevention, more than 5 minutes deletion if (time() - $redis->get($redisKey) > (60 * 5)) { $redis->del($redisKey); } return false; }
Ссылка: SETNX.