思路如下:

  • 使用hash存储用户上次看过的时间,使用sortedset存储每个模块的每个信息产生的时间
Map<String, String> dataMap = new HashMap<>();Jedis jedis=null;
String uid="1";//用户id
//分类数组
String []cagoryArray={"c1","c2"};
try {//连接池获取连接 jedis=//此处获取用户的操作时间集合Map<String, String> map = jedis.hgetAll("u-key-"+uid);if (map == null) {map = new HashMap<>();}for (String value : cagoryArray) {//获取某个分类下的上次操作时间String s = map.get(value);if (StringUtils.isBlank(s)) {//如果不存在,则设为有新信息dataMap.put(value, "1");} else {//计算从上次操作时间到现在的新的信息数量Long zcount = jedis.zcount("c-key-"+value, Double.parseDouble(s), System.currentTimeMillis());if (zcount == null || zcount <= 0) {//不存在或者小于等于0 则没有新的信息dataMap.put(value, "0");} else {dataMap.put(value, "1");}}}}finally {if(jedis!=null){//归还连接}
}
  • 当有新的信息产生,向相关模块添加时间:
Jedis jedis=null;
//c1模块有新的信息
String cid="c1";try {//连接池获取连接 jedis=//添加到sortedset结果 权重为时间毫秒long currentTimeMillis = System.currentTimeMillis();jedis.zadd("c-key-"+cid, currentTimeMillis, String.valueOf(currentTimeMillis));}finally {if(jedis!=null){//归还连接}
}
  • 当用户点击某个模块时,更新用户查看该模块的上次时间
Jedis jedis=null;
//c1模块有新的信息
String cid="c1";
//用户id
String uid="1";try {//连接池获取连接 jedis=//添加到sortedset结果 权重为时间毫秒jedis.hset("u-key-"+uid, cid, String.valueOf(System.currentTimeMillis()));}finally {if(jedis!=null){//归还连接}
}

这样就能实现消息的已读未读功能,消息的未读红点提醒功能只需要简单修改就可以

Redis实现信息已读未读红点状态提示功能相关推荐

  1. mysql消息已读未读_Redis实现信息已读未读状态提示

    本文为大家分享了Redis实现信息已读未读状态提示的关键代码,希望可以给大家一些启发,具体内容如下 前提: 假如现在有2个模块需要提示消息:只要存在用户在上个时间点之后没有看过的信息就提示用户有新的信 ...

  2. Redis 实现热度统计和已读未读功能

    Redis 实现销量统计和已读未读功能 本文主要讨论,通过Redis实现:1. 商品的销量统计.2. 页面内容的已读/未读功能 销量统计 背景 实现统计商品的购买量(热度). 假设有如下商品信息: 要 ...

  3. Redis实现排行榜、延迟队列、LRU、消息已读未读(Redisson客户端实现)

    目录 序言 Redis客户端选型 Redis配置 Redis实现排行榜 Redis实现延迟队列 Redis LRU(Least Recently Used)使用 Redis实现消息已读未读 总结 序言 ...

  4. android读信息会话,在融云 IMkit 会话界面基础上添加消息已读未读.

    在融云 IMkit 会话界面基础上添加消息已读未读. 使用过融云的同学们可能知道. 融云 IMkit 的会话界面, 发送玩消息后, 如果对方已读, 发送端则会显示小对号的图片. 但是更具需求要把小对号 ...

  5. 大公司面试考细节,设计群聊消息的已读未读功能你说说怎么做?

    一朋友和我讨论他前段时间面试某大公司的一题目 : 企业IM比如企业微信.钉钉里面的群消息的有个已读未读的功能,发送者刚发出消息时,当前群里其他群成员都是未读状态,陆陆续续有人看了这个消息,这时候消息的 ...

  6. 面试官:群聊消息的已读未读功能,你来设计一个?

    欢迎关注方志朋的博客,回复"666"获面试宝典 一朋友和我讨论他前段时间面试某大公司的一题目 : 企业IM比如企业微信.钉钉里面的群消息的有个已读未读的功能,发送者刚发出消息时,当 ...

  7. 群聊消息“已读”/“未读” 功能解决方案!

    一朋友和我讨论他前段时间面试某大公司的一题目: 企业IM比如企业微信.钉钉里面的群消息的有个已读未读的功能,发送者刚发出消息时,当前群里其他群成员都是未读状态,陆陆续续有人看了这个消息,这时候消息的详 ...

  8. IM群聊消息的已读未读功能在存储空间方面的实现思路探讨

    1.引言 IM系统中,特别是在企业应用场景下,消息的已读未读状态是一个强需求. 以阿里的钉钉为例,钉钉的产品定位是用于商务交流,其"强制已读回执"功能,让职场人无法再"假 ...

  9. 面试题:群聊消息的已读未读设计

    点击上方"Java之间",选择"置顶或者星标" 你关注的就是我关心的! 作者:小猿学习笔记 一朋友和我讨论他前段时间面试某大公司的一题目 : 企业IM比如企业微 ...

最新文章

  1. vue router 入门笔记
  2. mysql 去掉复合索引_MySQL性能优化[实践篇]-复合索引实例
  3. mac terminal vim delete key
  4. Zxing 竖屏切换 android
  5. 在CcentOS系统上将deb包转换为rpm包
  6. linux端口监听命令
  7. java-ee-api_刷新器-Java EE 7概览
  8. Http协议--Get和Post区别
  9. python预测发展趋势_Python中的趋势“预测器”?
  10. 【译】Node.js 日志打印指南
  11. 基础总结篇之九:Intent应用详解
  12. 虚拟无线接入网:行业的演进方向
  13. 【区块链】2018全年比特币网络重要指标图表分析
  14. 简单的学生成绩数据分析案例
  15. Mac Mini 安装Ubuntu20.04 KVM
  16. 台式电脑上没有显示计算机怎么办,电脑显示器无视频输入怎么办
  17. 局域网内windows远程mac(使用TeamView)
  18. C语言1.5e10什么意思,汽车排量1.5e是什么意思
  19. 用纯 JavaScript 实现的 MVC 程序
  20. 模拟电子技术基础 第一章 绪论

热门文章

  1. 聊天宝不是我们想要社交产品
  2. 【知识网络分析】作者合作网络(Co-authorship)
  3. PEiD的基础使用(持续--)
  4. 影像测量仪全自动测量汽车零件尺寸细节,保证整车品质和性能
  5. Nginx:搭建简单的文件下载服务器
  6. 中控考勤机二次开发小记
  7. JAVA程序员工作常用英语(细心整理)计算机常用英语汇总
  8. 某计算机系的小周,某大学计算机系的小周现在是大二的学生,现在回想起自己在大一时大手大脚花钱还是 - 问答库...
  9. 同样的内核,为何linux干净稳定,而android臃肿又乌烟瘴气
  10. 自己写php模板引擎,如何用php编写一个简单的模板引擎(附代码)