基本相关的命令:

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 聊天相关推荐

  1. php订阅系统,php redis pub/sub(Publish/Subscribe,发布/订阅的信息系统)之基本使用

    一.场景介绍 最近的一个项目需要用到发布/订阅的信息系统,以做到最新实时消息的通知.经查找后发现了redis pub/sub(发布/订阅的信息系统)可以满足我的开发需求,而且学习成本和使用成本也比较低 ...

  2. Spring mvc Data Redis—Pub/Sub(附Web项目源码)

    一.发布和订阅机制 当一个客户端通过 PUBLISH 命令向订阅者发送信息的时候,我们称这个客户端为发布者(publisher). 而当一个客户端使用 SUBSCRIBE 或者 PSUBSCRIBE ...

  3. Spring Data Redis—Pub/Sub(附Web项目源码)

    一.发布和订阅机制 当一个客户端通过 PUBLISH 命令向订阅者发送信息的时候,我们称这个客户端为发布者(publisher). 而当一个客户端使用 SUBSCRIBE 或者 PSUBSCRIBE ...

  4. php 利用redis写一个聊天室,使用Redis完成聊天室功能

    Redis提供了Pub/Sub(发布/订阅)模式的消息机制.发布者向指定频道发布消息,订阅了该频道的订阅者就可以获取消息.通过该机制,我们可以完成聊天室.公告牌等功能. 首先,来介绍下关于pub/su ...

  5. 引入Redis|tensorflow实现 聊天AI--PigPig养成记(3)

    引入Redis 项目github链接 在集成Netty之后,为了提高效率,我打算将消息存储在Redis缓存系统中,本节将介绍Redis在项目中的引入,以及前端界面的开发. 引入Redis后,完整代码链 ...

  6. php 利用redis写一个聊天室,Redis实现多人多聊天室功能

    本文为大家分享了Redis支持多人多聊天室功能的设计代码,供大家参考,具体内容如下 设计原理 左边的一个数据域,代表两个聊天室,聊天室id分别是827,729 在聊天室827里,有2个人,分别是jas ...

  7. Redis pub/sub机制在实际运用场景的理解(转载)

    Redis 的pub/sub机制与23种设计模式中的观察者设计模式极为类似.但Redis对于这个机制的实现更为轻便和简结,没有观察者模式的那么复杂的逻辑考虑而仅仅需要通过两个Redis客户端配置cha ...

  8. 硬核 | Redis Pub/Sub 发布订阅与宅男有什么关系?

    "65 哥,如果你交了个漂亮小姐姐做女朋友,你会通过什么方式将这个消息广而告之给你的微信好友?" "那不得拍点女朋友的美照 + 亲密照弄一个九宫格图文消息在朋友圈发布大肆 ...

  9. redis 实现直播聊天(后台逻辑)

    简单需求:直播的时候用户聊天的需求 后台实现:分为两个接口:发送消息接口和请求消息接口 主要点:redis的mget 的使用, 以及key值的设计 用直播期数[liveNum]作为当前期目前消息的总条 ...

最新文章

  1. basePath = request.getScheme()+://+request.getServerName()+:+r
  2. 如何及时获得AI顶尖科研团队的最新论文与进展?只需要一份AI内参!
  3. python输入多组测试数据_python ddt数据驱动实例代码分享
  4. 数据挖掘应用的一些场景和对应算法
  5. what is conversion exit defined in ABAP domain
  6. html怎么判断字段,javascript怎么判断是否为字符串?
  7. 思科服务器远程管理,Telnet远程访问思科交换机、路由器 TCP协议分析工具
  8. Python内置数据结构——字符串string
  9. php版本kms,通过 AWS KMS API 和 AWS SDK for PHP 版本 3 使用密钥 - 适用于 PHP 的 AWS 开发工具包...
  10. lintcode :最长公共前缀
  11. Eureka 注册中心 简单搭建
  12. Linux使用Blowfish生成密码,linux批量生成密码
  13. nicelabel java_EditPlus
  14. 如何选择适合的大数据分析软件
  15. 仪器仪表的标定、检定、校准、校验的区别【图文详解】
  16. 【pandas】结合泰坦尼克生还分析讲讲pandas常用基础操作
  17. 加州欧文计算机工程专业,加州大学欧文分校计算机工程专业本科直录申请条件...
  18. 系统平台新店铺运营思路
  19. 计算机正在准备从D盘中回收,电脑一直显示正在启动怎么选择重灌系统
  20. 管理软件到底有没有前途(三)-从国家十一五信息化战略规划来看

热门文章

  1. 【C++】37.为什么要使用Lambda表达式
  2. 大白话系列之C#委托与事件讲解大结局
  3. Spring AOP详细介绍
  4. Java程序员从笨鸟到菜鸟之(八十四)深入浅出Ajax
  5. OpenCV-Python教程(9)(10)(11): 使用霍夫变换检测直线 直方图均衡化 轮廓检测
  6. 用初次训练的SVM+HOG分类器在负样本原图上检测HardExample
  7. hadoop实战--搭建开发环境及编写Hello World
  8. Python图像处理库:PIL中Image,ImageDraw等基本模块介绍
  9. 百度前端fex-team团队面试指南
  10. 中国计算机学会CCF推荐国际学术会议和期刊目录-计算机图形学与多媒体