redis的发布与订阅

与消息队列的差别

不做持久化

不是异步

不能保证可靠性

使用实例

发布者示例:连接到 Redis 服务器,使用 publish 方法发布消息到指定的频道。

订阅者示例:连接到 Redis 服务器,使用 subscribe 方法订阅指定的频道,并通过回调或循环处理接收到的消息。

使用lettuce的示例

发布者:

csharp 复制代码
public class LettucePublisher {

    public static void main(String[] args) {
        // 连接到 Redis 服务器
        RedisClient redisClient = RedisClient.create("redis://localhost:6379");
        StatefulRedisConnection<String, String> connection = redisClient.connect();
        RedisCommands<String, String> commands = connection.sync();

        // 发布消息到频道
        String channel = "my_channel";
        String message = "Hello, Redis!";
        commands.publish(channel, message);

        System.out.println("Message '" + message + "' published to channel '" + channel + "'");

        // 关闭连接
        connection.close();
        redisClient.shutdown();
    }
}

订阅者:

csharp 复制代码
public class LettuceSubscriber {

    public static void main(String[] args) {
        // 连接到 Redis 服务器
        RedisClient redisClient = RedisClient.create("redis://localhost:6379");
        StatefulRedisPubSubConnection<String, String> pubSubConnection = redisClient.connectPubSub();
        RedisPubSubCommands<String, String> pubSubCommands = pubSubConnection.sync();

        // 订阅频道
        String channel = "my_channel";
        pubSubCommands.subscribe(channel);

        System.out.println("Subscribed to channel '" + channel + "'");

        // 处理接收到的消息
        while (true) {
            String message = pubSubCommands.receive().getMessage();
            System.out.println("Received message: " + message);
        }
    }
}
相关推荐
许彰午5 分钟前
# Oracle shutdown immediate关不掉——一次排坑实录
数据库·oracle
消失的旧时光-19438 分钟前
SQL 怎么学(工程实战总纲|用一套用户模型打穿全流程)
java·数据库·sql
abc123456sdggfd13 分钟前
如何统一SQL视图报错信息_使用异常处理机制包装视图
jvm·数据库·python
qq_4609784013 分钟前
如何处理SQL循环逻辑_探索递归CTE实现复杂计算
jvm·数据库·python
码农阿豪14 分钟前
Django接金仓数据库:我踩过的坑和填坑指南
数据库·python·django
疯狂成瘾者14 分钟前
Prompt分层策略
前端·数据库·prompt
2401_8314194415 分钟前
C++如何利用YAML存储复杂的数学矩阵_Eigen库结合yaml-cpp用法【实战】
jvm·数据库·python
2401_8987176616 分钟前
如何进行SQL数学计算_运用ROUND与CEIL处理数值精度
jvm·数据库·python
2501_9012005317 分钟前
Pytest 实现两级参数化:让服务名依赖于应用名的灵活测试方案
jvm·数据库·python
2301_7662834422 分钟前
C#怎么实现EF Core迁移 C#如何用Entity Framework Core进行数据库迁移和更新表结构【数据库】
jvm·数据库·python