Redis发布订阅subscribe/publish模式

Redis提供发布订阅功能,包括发布者、订阅者和Channel。尽管它是一个快速稳定的系统,但缺乏消息持久化和传输保障,可能导致消息丢失。本文将介绍如何使用Jedis编码实现Redis的发布订阅功能,并展示在SpringBoot中的集成应用。
摘要由CSDN通过智能技术生成

系列文章目录


文章目录


前言

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。
在这里插入图片描述


在官网的文档介绍中有一行介绍:Redis是一个快速稳定的发布/订阅消息系统。
Redis提供了发布与订阅的功能,可以用于消息的传输,Redis的发布订阅机制包括三部分,发布者、订阅者和Channel(主题或者队列)。
在这里插入图片描述
其原生命令以及相关介绍
http://www.redis.cn/topics/pubsub.html 。

Redis可以提供基本的发布订阅功能,但毕竟不像消息队列那种专业级别,所以会存在以下缺点:
redis无法对消息持久化存储,消息一旦被发送,如果没有订阅者接收,数据会丢失。
消息队列提供了消息传输保障,当客户端连接超时或事物回滚的等情况发生时,消息会重新发布给订阅者。redis没有该保障,导致的结果就是在订阅者断线超时或其他异常情况时,将会丢失所有发布者发布的信息。
若订阅者订阅了频道,但自己读取消息的速度很慢的话,那么不断积压的消息会使redis输出缓冲区的体积变得越来越大,这可能使得redis本身的速度变慢,甚至直接崩溃。

使用Jedis编码发布订阅功能
首先编写一个监听类PubSubListener,用于实现编码各种操作的业务逻辑

package com.example.springboot.listener;
import redis.clients.jedis.JedisPubSub;
public class PubSubListener extends JedisPubSub {
   
    // 取得订阅的消息后的处理
    public void onMessage(String channel, String message) {
   
        System.out.println("收到消息:" + channel + "=" + message);
    }
    // 初始化订阅时候的处理
    public void onSubscribe(String channel, int subscribedChannels) {
   
        System.out.println("初始订阅:" + channel + "=" + subscribedChannels);
    }
    // 取消订阅时候的处理
    public void onUnsubscribe(String channel, int subscribedChannels) {
   
        System.out.println("取消订阅:" + channel + "=" + subscribedChannels);
    }
    // 初始化按表达式的方式订阅时候的处理
    public void onPSubscribe(String pattern, int subscribedChannels) {
   
        System.out.println("初始订阅P:" + pattern 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java毕设王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值