我正在使用集群式 Redis。我想要做的就是为有限的集合添加一个新值。
这是我的代码:
$redis->watch(keyMem)
$count = $redis->scard($keyMem);
if($count < $limit)
$redis->multi()
->sadd($keyMem, $value)
->exec();
我得到:
"cannot use 'watch' over clusters of connections."
最佳答案
我找不到任何解决方案,我自己编写了锁。
$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);
}
}
}
关于php - 对 redis 集群 php 的检查和设置操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29164369/