当前位置: 首页 > news >正文

太原做网站的公司排行/seo顾问阿亮

太原做网站的公司排行,seo顾问阿亮,wordpress菜单栏添加页面,普陀区网站建设简单需求:直播的时候用户聊天的需求 后台实现:分为两个接口:发送消息接口和请求消息接口 主要点:redis的mget 的使用, 以及key值的设计 用直播期数【liveNum】作为当前期目前消息的总条数,使用incr在发…

 

简单需求:直播的时候用户聊天的需求

后台实现:分为两个接口:发送消息接口和请求消息接口

主要点:redis的mget 的使用,

以及key值的设计

用直播期数【liveNum】作为当前期目前消息的总条数,使用incr在发送接口来累加总条数

每条消息的key:直播期数【liveNum】_当前消息第几条

实体类的属性

public class LiveChat {/*** 当前期的第几条数据*/private Integer id;/*** 直播期数*/private String liveNum;/*** 用户编号*/private String userNo;/*** 内容*/private String content;
}

 

②发送消息的代码

public boolean sendMessage(LiveChat liveChat) {//验证敏感词//非空验证//消息存到缓存String liveNum = liveChat.getLiveNum();ValueOperations valueOperations = redis.getValueOperations();//将当前消息累计到消息的总条数的Long increment = valueOperations.increment(liveNum, 1);StringBuilder builder = new StringBuilder(liveNum);builder.append("_");valueOperations.set(builder.append(String.valueOf(increment)).toString(), liveChat);return true;//消息存到消息队列}

 

③获取消息的接口 参数liveNum:直播期数;lastNum:上次请求时最新的条数

 

public List<LiveChat> getMeaasge(String liveNum,long lastNum) {ValueOperations valueOperations = redis.getValueOperations();//当前消息已经累计的条数Object object = valueOperations.get(liveNum);if(object!=null) {long current = Long.valueOf(object.toString());List<String> keys = new ArrayList<String>();for (long i = current; i > lastNum; i--) {StringBuilder builder = new StringBuilder(liveNum);builder.append("_");keys.add(builder.append(String.valueOf(i)).toString());}System.out.println("keys===="+keys);List<LiveChat> multiGet = valueOperations.multiGet(keys);System.out.println("multiGet ===="+multiGet);return multiGet;}System.out.println("当前期数的消息数为0");return null;

上面是主要的代码逻辑,添加上Controller之后,就可以调用接口来进行测试

用户发送消息调用sendMessage接口

比如

用户进入直播页面前端可以采用每隔2秒访问getMeaasge方式来获取信息,刚开始进去lastNum值为0,以后的值为上一次请求数据时最大的数据条数

(此时在发送两个聊天数据)

请求参数变成1

总结:①主要用了redis命令中的incr和mget

②发送接口的参数

{
    "liveNum":"20190812",
    "userNo":"201903140000",
    "content":"第3条消息"
}没有什么特殊的地方

③请求接口的参数liveNum,直播期数(我放在了请求头里面)和lastNum上一次请求最新的消息的id(这个为了前端方便取出来,也可以单独拿出来,而不是和返回的消息数据耦合在一起)

④消息key值得设计,为了使用multiget的,key设计成了 直播期数【liveNum】_当前消息第几条

另外可以加上消息队列来进行数据落地到mysql等数据库;如果用户中途进入,消息产生了很多,可以设置最多返回条数等等;根据场景设置消息过期时间

备注(业务逻辑经过正式线验证,虽然之前正式线用的是memcache实现的,但是逻辑类似;这个redis是单机模式,redis自带集群中用mget命令需要修改key的设计方式,让请求总命中同样的slot上)

http://www.jmfq.cn/news/5080807.html

相关文章:

  • wordpress改字体/正规优化公司哪家好
  • 长春火车站到吉大一院/百度账号注册入口
  • 盐山县网站建设/谷歌play商店官网
  • 商城网站设计公司排名/免费推广产品的平台
  • 做软件下载网站违法吗/网络怎样做推广
  • 网页超链接怎么做/手机seo排名软件
  • 厦门建设银行网站首页/seoul是什么意思
  • 建设银行网站在线客服是真的吗/百度搜索推广收费标准
  • 哪里有网站建设/昆明seo网站管理
  • 成都制作网站公司简介/百度推广代理商赚钱吗
  • 升级不了wordpress/苏州seo整站优化
  • 石家庄网站建设开发/长春疫情最新消息
  • 计算机基础网站建设和网络安全/如何进行网络营销
  • 如果启动浏览器就能直接打开一个常用的网站主页_要怎么做?/公司网站首页设计
  • 做算命网站挣钱吗/企业网络营销策略分析
  • 日本做暧视频观看网站/cms
  • 网站制作可能出现的问题/semir森马
  • 石家庄 网站建设 15369356722/找做网站的公司
  • 手机网站 微信链接怎么做/宁波营销型网站建设优化建站
  • 广州网页建站/百度网站入口
  • 科学城做网站公司/免费注册个人网站不花钱
  • 达州做淘宝网站/谷歌搜索引擎下载安装
  • 展示型网站制作/大数据智能营销系统
  • 怎么做网站劫持/谷歌搜索入口 镜像
  • 顺昌网站建设wzjseo/百度推广客户端官方下载
  • 做齐鲁油官方网站/百度广告代理
  • 公司主页网站制作/电商怎么做
  • 常见网站推广方式/百度热搜榜在哪里看
  • 十堰网站建设怎么样/灰色行业关键词优化
  • 政府部门建设网站流程/手机百度官网首页