redis cluster php上的检查和设置操作

时间:2015-03-20 10:27:44

标签: php redis cluster-computing predis

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

这是我的代码:

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

我得到了:

  

“无法通过群集连接使用'监视'。”

1 个答案:

答案 0 :(得分: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);
    }
  }
}