1

我正在使用集群的redis。我想做的就是为有限的集合添加一个新值。

这是我的代码:

$redis->watch(keyMem)
$count = $redis->scard($keyMem);
if($count < $limit) 
$redis->multi()
  ->sadd($keyMem, $value)
  ->exec();

我得到:

“不能对连接集群使用‘监视’。”

4

1 回答 1

0

我找不到任何解决方案,我编写了自己的锁。

$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);
    }
  }
}
于 2015-03-27T14:51:40.763 回答