Почему Redis Pub и Sub считаются разными клиентами, когда открыто только одно соединение? - PullRequest
0 голосов
/ 15 марта 2019

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

import redis
redis_server = redis.Redis()

он не распознает его как нового клиента. Только когда я позвоню одному из них

redis_server.publish("channel", message) 
redis_server.subscribe("channel")

Я вижу, что подключено 2 клиента. Клиенты паба / суб обслуживаются отдельно в Redis? Почему бы не зарегистрировать подключенного клиента, когда новое соединение открыто?

1 Ответ

0 голосов
/ 20 марта 2019

По умолчанию redis-py дает вам пул соединений с количеством соединений максимум . При первой введенной вами команде будет установлено реальное соединение, и вы увидите, что оно отображается в CLIENT LIST на сервере.

Всякий раз, когда какая-либо клиентская библиотека для Redis запускает команду подписки, этим все соединение занято, поэтому redis-py, вероятно, создает отдельное соединение, выделенное для этого.

Это должно объяснить, почему вы не видите подключенных клиентов, затем 2. Это не обязательно 1 соединение для каждой команды, выполненной, так как соединения в пуле будут использоваться повторно.

...