我正在使用集群的redis。我想做的就是为有限的集合添加一个新值。
这是我的代码:
$redis->watch(keyMem)
$count = $redis->scard($keyMem);
if($count < $limit)
$redis->multi()
->sadd($keyMem, $value)
->exec();
我得到:
“不能对连接集群使用‘监视’。”
我正在使用集群的redis。我想做的就是为有限的集合添加一个新值。
这是我的代码:
$redis->watch(keyMem)
$count = $redis->scard($keyMem);
if($count < $limit)
$redis->multi()
->sadd($keyMem, $value)
->exec();
我得到:
“不能对连接集群使用‘监视’。”
我找不到任何解决方案,我编写了自己的锁。
$keyLock = $keyMem."lock";
$start_time = microtime();
while(true){
if($redis->setnx($keyLock, "1")){
$count = $redis->scard($keyMem);
if(i$count < $limit){
$r = $tredis->sadd($keyMem, $value);
}
$redis->del($keyLock);
}
else{
if(microtime() - $start_time > 0.05){
$tredis->del($keyLock);
}
}
}