分享一个「Redis」实现「聊天回合制」的方案

编程入门 行业动态 更新时间:2024-10-24 08:19:15

分享一个「Redis」实现「聊天回合制」的<a href=https://www.elefans.com/category/jswz/34/1770692.html style=方案"/>

分享一个「Redis」实现「聊天回合制」的方案

场景

先说下我这边的场景,我们的项目中是包含聊天功能的,我们服务的对象主要是医院的医生,患者在网上找医生问诊时,往往会出现不停问的情况。

医生目前唯一的做法是自己结束这个咨询,或等待系统自动结束,这就带来了一个问题,不管是系统结束还是医生手动结束,患者都喜欢投诉和打差评,导致医生不敢擅自结束,问烦了又不好不回复,不回复也要被投诉。

最终聊天回合制这个需求就摆出来了,主动告诉患者我们的聊天是有回合的,所以你要一次问清楚,回合数满了我们不会再回复,如果患者硬要投诉,医生也可以说,这是做这个产品的公司自己设定的。

结下来就是,我们要把锅端好。

实际上,聊天回合制的诞生,基本上都和这个场景的诉求类似,为了减少用户频繁且无休止的咨询。

思路

结合redis能够很好的实现聊天回合制,当然也可以直接通过数据库来实现,但显然redis操作更简单性能更优越。

总体思路如下:

1)、redis中存储两个key,一个是表示对象,声明为chat-who:consultId,value为对象标识,比如这里就是医生和患者,医生用D标识,患者用P标识;另一个key是表示回合数,声明为chat-num:consultId,value就是当前回合数。这里的consultId是动态的,表示这个咨询的id,可以根据自己的业务来定;


2)、这两个key的过期时间我们都定为2天,具体过期时间要根据自己业务规则来适配;


3)、我们在特定的位置进行初始化,只要是进入聊天之前都可以,比如这里的场景,就是患者发起咨询成功后才开始聊天,我们就在发起成功后的方法中初始化聊天回合数为默认值6个回合,这个默认值还可以做成配置的形式进行动态读取的;


4)、我们在发消息的方法中做一个判断,获取redis中的chat-who:consultId,看是否存在,存在就往下执行,不存在就说明发的是

更多推荐

分享一个「Redis」实现「聊天回合制」的方案

本文发布于:2024-02-06 04:13:49,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1746239.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:方案   Redis

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!