Laravel实现redis发布-订阅

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: Laravel实现redis发布-订阅

如果说我们需要一个比较简单的这种机制,我们可以采用redis这个轻量级的订阅机制,我们可以参考redisPublish/Subscribe 机制,得到比较好的问题解决方案

当然,如果是项目比较复杂,可以考虑使用KafkaRabbitMQ之类的消息队列组件

首先简单介绍关于redis这个机制相关的几个命令

PSUBSCRIBE pattern [pattern ...] 
订阅一个或多个符合给定模式的频道。
PUBSUB subcommand [argument [argument ...]] 
查看订阅与发布系统状态。
PUBLISH channel message 
将信息发送到指定的频道。
PUNSUBSCRIBE [pattern [pattern ...]] 
退订所有给定模式的频道。
SUBSCRIBE channel [channel ...] 
订阅给定的一个或多个频道的信息。
UNSUBSCRIBE [channel [channel ...]] 
指退订给定的频道。

我们是使用Laravel来实现这个

composer require predis/predis  安装redis组件
使用Laravel创建发送消息文件及接收消息文件
php artisan make:command PublishMsg --command=Pub:Msg
php artisan make:command SubscribeMsg --command=Sub:Msg

App\Console\Commands\SubscribeMsg.phphandle订阅redis队列消息

// 启用redis订阅功能   持续监听redis-msg队列是否有消息   如果要消息就会到回调里面被echo
       Redis::subscribe(['redis-msg'],function ($message){
            echo $message;
        });

App\Console\Commands\PublishMsg.phphandle发送redis队列消息

try{
                    // 队列名称      消息
        Redis::publish('redis-msg','this a test hahhhhhhhhhhhh');
    }catch (\Exception $e){
        echo "发送失败";
}
php artisan Sub:Msg  开启消息订阅
php artisan Pub:Msg  开启消息发布

在实际中需要传输数据时,一般会将其序列化为字符串或以jsonXML等格式进行发送

本文为作者原创,手码不易,允许转载,转载后请以链接形式说明文章出处。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
1月前
|
NoSQL Redis
【Redis】Redis的发布和订阅
【1月更文挑战第18天】【Redis】Redis的发布和订阅
|
1月前
|
NoSQL 安全 Unix
Redis源码、面试指南(4)单机数据库、持久化、通知与订阅(中)
Redis源码、面试指南(4)单机数据库、持久化、通知与订阅
26 0
|
5天前
|
监控 NoSQL Java
在 Spring Boot 中实现 Redis 的发布/订阅功能可以通过 RedisTemplate 和消息监听器来完成
在 Spring Boot 中实现 Redis 的发布/订阅功能可以通过 RedisTemplate 和消息监听器来完成
9 1
|
27天前
|
存储 缓存 NoSQL
Redis与数据库同步指南:订阅Binlog实现数据一致性
本文由开发者小米分享,探讨分布式系统中的一致性问题,尤其是数据库和Redis一致性。文章介绍了全量缓存策略的优势,如高效读取和稳定性,但也指出其一致性挑战。为解决此问题,提出了通过订阅数据库的Binlog实现数据同步的方法,详细解释了工作原理和步骤,并分析了优缺点。此外,还提到了异步校准方案作为补充,以进一步保证数据一致性。最后,提醒在实际线上环境中需注意日志记录、逐步优化和监控报警。
64 3
|
1月前
|
存储 NoSQL API
Redis源码、面试指南(4)单机数据库、持久化、通知与订阅(上)
Redis源码、面试指南(4)单机数据库、持久化、通知与订阅
31 1
|
1月前
|
存储 NoSQL 调度
Redis源码、面试指南(4)单机数据库、持久化、通知与订阅(下)
Redis源码、面试指南(4)单机数据库、持久化、通知与订阅
25 0
|
1月前
|
NoSQL Redis
redis消息订阅
redis消息订阅
|
1月前
|
NoSQL Java Redis
Redis的发布-订阅模式是什么?它的应用场景是什么?
Redis的发布-订阅模式是什么?它的应用场景是什么?
75 0
|
NoSQL PHP Redis
laravel8 redis简便超买防御
php超卖防御的实现思路
|
7天前
|
NoSQL Redis Windows
win10下Redis安装、启动教程
win10下Redis安装、启动教程
16 2

热门文章

最新文章