действие проверки и установки в кластере Redis Переполнение стека

Я использую кластерный Redis. Все, что я хочу сделать, это добавить новое значение в ограниченный набор.

Это мой код:

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

и я получаю:

msgstr «нельзя использовать» наблюдение «за кластерами соединений.»

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);
}
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector