redis pub/sub 聊天
基本相关的命令:
SUBSCRIBE channel [channel ...] 订阅给定的一个或多个频道的信息。
PSUBSCRIBE pattern [pattern ...] 订阅一个或多个符合给定模式的频道。 P表示正则式。 与SUBSCRIBE相比, 就是多了个正则式功能、参数可为正则式。
UNSUBSCRIBE [channel [channel ...]] 指示客户端退订给定的频道。
PUNSUBSCRIBE [pattern [pattern ...]] 指示客户端退订所有给定模式。 P含义同上
PUBLISH channel message 将信息 message 发送到指定的频道 channel 。 向频道发布消息
PUBSUB 统计信息, 目前支持如下3个子COMMAND
- PUBSUB CHANNELS [pattern] 列出活跃的channel; 其中前两个是特定的关键字, patten才是参数
- PUBSUB NUMSUB [channel-1 ... channel-N] 列出给定channel的订阅数
- PUBSUB NUMPAT 所有频道的订阅总和
notes, channel不需要创建。 只需要订阅, 订阅后, 如果没有该频道, 会自动创建, 有就加入; 退订后,订阅数减1、到0时就"去掉"频道。
redis在subscribe/psubscribe之后, 该context就只能接受数据或者再 订阅/退订 了。不能发送其他的COMMAND,比如pubsub, publish等。
因此对于一个聊天应用的客户端而言, 需要两个context:
-------------- 一个context用于subscribe sometopic, 然后不停等待接受其他人发出的消息(包括“自己”发出的);
-------------- 一个context用于publish sometopic "words..", 用于发出消息。
将发送和接受分开了。
游戏服务器通常有个Gate服务器负责与客户端的连接、请求/应答的转发, Gate再负责与后台的logic/match/auth等服务器通讯。因此,redis的pub/sub功能并不能直接适用于COC的聊天功能。 原因大概有:
1) COC删游戏、再下载进入, 或者退出公会再加入公会后, 能得到此前一段时间/固定条数的历史聊天记录。 这和pub/sub的定义冲突:pub只保证发给现在已经sub上的。
2)如上的游戏后端设计,gate需要充当客户端的代理。 客户端发送文本给gate,gate作为redis-cli 与redis server通讯; 但一个gate只能充当一个客户端代理; 除非对redis-server进行改造。 或者聊天服务不通过gate。
redis pub/sub 聊天相关推荐
- php订阅系统,php redis pub/sub(Publish/Subscribe,发布/订阅的信息系统)之基本使用
一.场景介绍 最近的一个项目需要用到发布/订阅的信息系统,以做到最新实时消息的通知.经查找后发现了redis pub/sub(发布/订阅的信息系统)可以满足我的开发需求,而且学习成本和使用成本也比较低 ...
- Spring mvc Data Redis—Pub/Sub(附Web项目源码)
一.发布和订阅机制 当一个客户端通过 PUBLISH 命令向订阅者发送信息的时候,我们称这个客户端为发布者(publisher). 而当一个客户端使用 SUBSCRIBE 或者 PSUBSCRIBE ...
- Spring Data Redis—Pub/Sub(附Web项目源码)
一.发布和订阅机制 当一个客户端通过 PUBLISH 命令向订阅者发送信息的时候,我们称这个客户端为发布者(publisher). 而当一个客户端使用 SUBSCRIBE 或者 PSUBSCRIBE ...
- php 利用redis写一个聊天室,使用Redis完成聊天室功能
Redis提供了Pub/Sub(发布/订阅)模式的消息机制.发布者向指定频道发布消息,订阅了该频道的订阅者就可以获取消息.通过该机制,我们可以完成聊天室.公告牌等功能. 首先,来介绍下关于pub/su ...
- 引入Redis|tensorflow实现 聊天AI--PigPig养成记(3)
引入Redis 项目github链接 在集成Netty之后,为了提高效率,我打算将消息存储在Redis缓存系统中,本节将介绍Redis在项目中的引入,以及前端界面的开发. 引入Redis后,完整代码链 ...
- php 利用redis写一个聊天室,Redis实现多人多聊天室功能
本文为大家分享了Redis支持多人多聊天室功能的设计代码,供大家参考,具体内容如下 设计原理 左边的一个数据域,代表两个聊天室,聊天室id分别是827,729 在聊天室827里,有2个人,分别是jas ...
- Redis pub/sub机制在实际运用场景的理解(转载)
Redis 的pub/sub机制与23种设计模式中的观察者设计模式极为类似.但Redis对于这个机制的实现更为轻便和简结,没有观察者模式的那么复杂的逻辑考虑而仅仅需要通过两个Redis客户端配置cha ...
- 硬核 | Redis Pub/Sub 发布订阅与宅男有什么关系?
"65 哥,如果你交了个漂亮小姐姐做女朋友,你会通过什么方式将这个消息广而告之给你的微信好友?" "那不得拍点女朋友的美照 + 亲密照弄一个九宫格图文消息在朋友圈发布大肆 ...
- redis 实现直播聊天(后台逻辑)
简单需求:直播的时候用户聊天的需求 后台实现:分为两个接口:发送消息接口和请求消息接口 主要点:redis的mget 的使用, 以及key值的设计 用直播期数[liveNum]作为当前期目前消息的总条 ...
最新文章
- basePath = request.getScheme()+://+request.getServerName()+:+r
- 如何及时获得AI顶尖科研团队的最新论文与进展?只需要一份AI内参!
- python输入多组测试数据_python ddt数据驱动实例代码分享
- 数据挖掘应用的一些场景和对应算法
- what is conversion exit defined in ABAP domain
- html怎么判断字段,javascript怎么判断是否为字符串?
- 思科服务器远程管理,Telnet远程访问思科交换机、路由器 TCP协议分析工具
- Python内置数据结构——字符串string
- php版本kms,通过 AWS KMS API 和 AWS SDK for PHP 版本 3 使用密钥 - 适用于 PHP 的 AWS 开发工具包...
- lintcode :最长公共前缀
- Eureka 注册中心 简单搭建
- Linux使用Blowfish生成密码,linux批量生成密码
- nicelabel java_EditPlus
- 如何选择适合的大数据分析软件
- 仪器仪表的标定、检定、校准、校验的区别【图文详解】
- 【pandas】结合泰坦尼克生还分析讲讲pandas常用基础操作
- 加州欧文计算机工程专业,加州大学欧文分校计算机工程专业本科直录申请条件...
- 系统平台新店铺运营思路
- 计算机正在准备从D盘中回收,电脑一直显示正在启动怎么选择重灌系统
- 管理软件到底有没有前途(三)-从国家十一五信息化战略规划来看
热门文章
- 【C++】37.为什么要使用Lambda表达式
- 大白话系列之C#委托与事件讲解大结局
- Spring AOP详细介绍
- Java程序员从笨鸟到菜鸟之(八十四)深入浅出Ajax
- OpenCV-Python教程(9)(10)(11): 使用霍夫变换检测直线 直方图均衡化 轮廓检测
- 用初次训练的SVM+HOG分类器在负样本原图上检测HardExample
- hadoop实战--搭建开发环境及编写Hello World
- Python图像处理库:PIL中Image,ImageDraw等基本模块介绍
- 百度前端fex-team团队面试指南
- 中国计算机学会CCF推荐国际学术会议和期刊目录-计算机图形学与多媒体