redis数据类型案例
-
案例
-
业务场景:在微信的使用过程中,当微信接收到消息后,会默认将最近接收到的消息顶置,当多个好友及关注的订阅号同时发送消息时,该排序会不停的进行交替。同时还可以将重要的会话设置为顶置,一旦用户离线后,再次打开微信时,消息该按什么样的顺序显示?
-
解决方案
-
依赖list的数据具有顺序的特征对消息进行管理,将list结构作为栈来使用
-
对顶置与普通会话分别创建独立的list分别管理
-
当某个list中接受到用户消息后,将消息发送方的id从list的一侧加入list
-
多个相同id发送的消息反复入栈会出现问题,在入栈之前无论是否具有当前id对应的消息,先删除对应id
-
推送消息时先推送顶置会话list,在推送普通会话list,推送完成的list清除所有数据
-
消息是数量,也就是微信用户对话的数量采用计数器的思想另行记录,伴随list操作同步进行
-
-
具体操作
-
-