- 使用Setnx命令加锁;
- 设置锁的失效时间,防止其他线程长时间无法获取锁;
- 加锁时,给每个线程设置唯一标识,防止误删其他线程的锁;
- 使用Redis内嵌的Lua脚本释放锁,保证原子性;
- 未获取锁的线程循环反复获取锁。
<?php
function getRedis()
{
$redis = new Redis();
$redis->connect('127.0.0.1', 6379, 60);
return $redis;
}
function lock($key