Redis реализует подписку и публикацию сообщений | Redis Combat (8)

задняя часть
Redis реализует подписку и публикацию сообщений | Redis Combat (8)

Это 22-й день моего участия в Gengwen Challenge.Подробности о мероприятии:Обновить вызов


Статьи по Теме

Сводка боя Redis:Редис в действии


предисловие

Публикация/подписка Redis (pub/sub) — это режим обмена сообщениями: отправитель (pub) отправляет сообщения, а подписчики (sub) получают сообщения.

Клиенты Redis могут подписаться на любое количество каналов!

在这里插入图片描述

1. Реализовать функцию подписки и публикации

① Команда:

Эти команды широко используются для создания приложений мгновенного общения, таких как онлайн-чаты (chatroom) и трансляции в реальном времени, напоминания в реальном времени и так далее.

在这里插入图片描述

② Реализация публикации и подписки:

1. Абонент:

127.0.0.1:6379> ping
PONG
127.0.0.1:6379> SUBSCRIBE dingdada  #订阅名字为 dingdada 的频道
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "dingdada"
3) (integer) 1
#等待推送的信息
1) "message"  #消息
2) "dingdada"  #来自哪个频道的消息
3) "hello world\xef\xbc\x81"  # 消息的具体内容
1) "message"
2) "dingdada"
3) "my name is dyj\x81"

2. Отправитель:

127.0.0.1:6379> ping
PONG
127.0.0.1:6379> PUBLISH dingdada "hello world!"  #发送消息到dingdada 频道
(integer) 1
127.0.0.1:6379> PUBLISH dingdada "my name is dyj"  #发送消息到dingdada 频道
(integer) 1

как показано на рисунке:

Подписчик:

在这里插入图片描述

отправитель:

在这里插入图片描述

③Команда PSUBSCRIBE: подписаться на указанный канал!

PSUBSCRIBE + 频道。。 #订阅给定的模式,可多个

在这里插入图片描述

④Команда PUBLISH: отправить сообщение на указанный канал!

PUBLISH + 频道 +消息  #将信息 message 发送到指定的频道 channel

在这里插入图片描述

⑤ Команда PUNSUBSCRIBE: отписаться!

#指示客户端退订指定模式,若果没有提供模式则退出所有模式。

在这里插入图片描述

⑥ПОДПИСАТЬСЯ: Подписка, как указано выше. Не вдавайтесь в подробности!

在这里插入图片描述

⑦ОТПИСАТЬСЯ: Отписаться, как указано выше, без подробностей!

在这里插入图片描述

⑧Обзор:

Pub/Sub буквально означает «Публикация и подписка». В Redis вы можете настроить публикацию сообщений и подписку на сообщения для определенного значения ключа. Когда сообщение публикуется по значению ключа, все клиенты, подписавшиеся на него, получат соответствующее сообщение.

Наиболее очевидным использованием этой функции является система обмена сообщениями в реальном времени, например, обычнаяЖивой чат,Групповой чати другие функции.


2. Используйте Jedis для управления Redis

Я не буду публиковать концептуальный ответ Baidu. Проще говоря,Jedis — это официальный инструмент для разработки соединений Java, рекомендованный Redis!

Хотя текущая версия SpringBoot2.× заменила Jedis на Lettuce, я все еще думаю, что необходимо понимать, как использовать Jedis!

  1. Как интегрировать Jedis и подключиться к базе данных Redis в java-проекте?

① Создайте проект Maven

Он может быть пустым~ Я не буду вдаваться в подробности того, как его создать!

在这里插入图片描述

②Импортируйте зависимости Jedis и fastjson и терпеливо дождитесь завершения загрузки!

<!--导入jedis的包-->
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.2.0</version>
</dependency> 
<!--fastjson-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.62</version>
 </dependency>

③Подключение к тесту Redis.Для удобства тестирования подключение к локальному сервису Redis.Для удаленного подключения необходимо изменить файл конфигурации и отключить брандмауэр.Об этом я расскажу в отдельной статье в будущем!

// 1、 new Jedis 对象即可
Jedis jedis = new Jedis("127.0.0.1",6379);
// jedis 所有的命令就是我们之前的所有指令
System.out.println(jedis.ping());

как показано на рисунке:

在这里插入图片描述

Вернитесь к PONG, чтобы доказать, что соединение установлено успешно!

④ Часто используемые упражнения API:

 		// 1、 new Jedis 对象即可
        Jedis jedis = new Jedis("127.0.0.1",6379);
        jedis.flushDB();//清空当前库的所有数据
        jedis.set("name","dingyongjun");
        jedis.set("age","23");
        jedis.set("high","173");
        System.out.println("name:"+jedis.get("name")+"\nage:"+jedis.get("age")+"\nhigh"+jedis.get("high"));

как показано на рисунке:

在这里插入图片描述

		jedis.lpush("list","1","2","3","4");
        System.out.println("list: "+jedis.lrange("list",0,-1));

как показано на рисунке:

在这里插入图片描述

⑤Резюме: Подключение и использование Redis в Jedis точно такое же, как и консольная команда Redis.Я не буду повторять команды одну за другой.Если будет время позже, я постепенно улучшу все команды!


Впереди долгий путь, и я обязательно буду его искать вдоль и поперёк~

Если вы думаете, что я блогеры хорошо пишу! Писать нелегко, пожалуйста, ставьте лайки, подписывайтесь и комментируйте, чтобы поощрять блоггеров ~ хахах