php - 对 redis 集群 php 的检查和设置操作

标签 php redis cluster-computing predis

我正在使用集群式 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/

相关文章:

javascript - 如何做 Redis 树并优化它 + Node.js

node.js - NodeJS process.send 停止工作

ruby-on-rails - 统计分析 Rails 应用程序的最佳托管

hadoop - 在 hadoop 集群中拥有更快的主节点有好处吗?

php - 如何打印 Magento 的所有产品列表?

php/mysql 回显 mysql 子字符串

python - 跟踪每日配额(自动过期增量)——Redis 还是 Pymongo?

redis - 如何使用哈希类型对存储在Redis中的值进行分组?

php - 获取有帖子的用户

php - 我怎样才能用一个以上的空格来分解一个字符串,而不是在 php 中恰好用一个空格