Почему php redis возвращает данные с двоеточиями

Проблема

Я написал многопоточную реализацию кода и попытался использовать Redis в качестве счетчика, это мой код. Когда я пытаюсь использовать Redis в качестве счетчика, я часто получаю ':' (двоеточие) в значении, иногда нет, это потому, что я слишком быстро зацикливаюсь, а Redis даже не замечает?

Выходной результат

cclilshy@192 debug % php st.php
registerRedis success!
registerSocket success!
1
2
3
1
2
string(2) ":5"
1
2
3
string(2) ":9"
3
string(1) "9"

// the up is the output. Why?

Код


$func = function($handle){
    for($i=0;$i<3;$i++){
        echo $handle->counter().PHP_EOL;
    }

    var_dump($handle->total());
};

//$handle->counter() :
public function counter($record = true){
        if ($record = false){
            return $this->count;
        }
        $this->thread->counter();
        $this->count++;
        return $this->count;
}

//$handle->total() :
public function total(){
        return $this->thread->counter(false);
}

//$handle->thread->counter() : 
public function counter($record = true){
        if ($record === false){
            return $this->redis->get('thread.' . $this->pids[0] . '.count');
        }
        return $this->redis->incr('thread.' . $this->pids[0] . '.count');
}

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
106
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Redis является однопоточным по своей конструкции, поэтому он в любом случае обслуживает ваши потоки синхронно.

Ответ выглядит так, потому что протокол RESP не анализируется и возвращает вам необработанное представление для целого числа.

Да, одной из причин может быть то, что процесс синтаксического анализатора все еще заблокирован в то время, когда вы уже возвращаете следующее значение.

Ответ принят как подходящий

Я решил эту проблему, используя отдельное соединение Redis для каждого процесса.

Другие вопросы по теме