【问题标题】:check-and-set action on redis cluster php对 redis 集群 php 的检查和设置操作
【发布时间】:2015-03-20 10:27:43
【问题描述】:
我正在使用集群的 redis。我想做的就是为有限的集合添加一个新值。
这是我的代码:
$redis->watch(keyMem)
$count = $redis->scard($keyMem);
if($count < $limit)
$redis->multi()
->sadd($keyMem, $value)
->exec();
我得到:
“不能对连接集群使用‘监视’。”
【问题讨论】:
标签:
php
redis
cluster-computing
predis
【解决方案1】:
我找不到任何解决方案,我编写了自己的锁。
$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);
}
}
}