pdqn.net
当前位置:首页 >> rEDis的订阅可以直接推到客户端吗 >>

rEDis的订阅可以直接推到客户端吗

Redis 的 SUBSCRIBE 命令可以让客户端订阅任意数量的频道, 每当有新信息发送到被订阅的频道时, 信息就会被发送给所有订阅指定频道的客户端.作为例子, 下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 client2 、 client5 和 client1 之间的关系:

Redis 的 SUBSCRIBE 命令可以让客户端订阅任意数量的频道, 每当有新信息发送到被订阅的频道时, 信息就会被发送给所有订阅指定频道的客户端.作为例子, 下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 client2 、 client5 和 client1 之间的关系:

从上面的官方解释上来看,它的玩法有一点像现实生活中我们听收音机一个道理,要想听收音机,我们要做什么?肯定就是调频啦,只有在正确的频道上面,我们才能听得到好听的节目,所以说subscribe首先要订阅一个频道(channel),下面

基于事件订阅的模式,比如 EventBus类的组件产品.但是往往设计比较复杂.如果依赖于 Redis做事件消息推送.那就大大简化了这种设计模式,而且性能也比较客观.Redis在 2.0之后的版本中 实现了 事件推送的 pub/sub命令!

具体的业务还是得需要你自己定制. 你的需求实际上是一个变形的生产者-消费者实现.对于此类需求,主要是将请求和实际的处理过程解耦,一般都是采取异步的方式来通知请求方,这跟用不用redis其实没有多大的关系.一般的实现方法是你需要将用户的请求封装成一个Task,然后将这个Task再push到redis队列,然后后端的worker.php完全可以多进程、多线程的并发处理Task并将处理结果回调给请求方.这里唯一麻烦点的就是这个Task的设计,需要能够包含请求信息(请求内容,请求方标识等等).如果您认可我的答案,请采纳.

首先redis的发布订阅模式不会缓存数据,就是我发布了,如果你已经可以接受了,那么你就能接收到,如果你还没有准备好那么就会错误准备好之前的数据.至于为啥为啥和消息队列联系在一起,是因为redis的发布订阅模式的实现就是通过消息队列实现的.比如多个发布端都可以发布消息,而订阅端都会接收到消息.可见中间必然有一个队列取集中发布的消息.然后把消息按序发出去

subscribe是一个阻塞的方法,在取消订阅该频道前,会一直阻塞在这,只有当取消了订阅才会执行下面的other code,参考上面代码,我在onMessage里面收到消息后,调用了this.unsubscribe(); 来取消订阅,这样才会执行后面的other code!

edis针对java有一个客户端,叫做jedis.可以使用jedis来连接redis服务器,将常用数据放到redis中,用时取出就好了.

先把语音存储都某个地方,生成一个ID然后利用Redis的订阅去分发这个ID客户端接收到这个事件,去主动拉取这个ID的语音.Redis订阅后是阻塞的,KILL掉这个进程就取消了你这是要做APP么?移动网络不稳定,网络波动连接断开订阅就取消了的.

网站首页 | 网站地图
All rights reserved Powered by www.pdqn.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com