我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Redis实现信息已读未读状态提示

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Redis实现信息已读未读状态提示

本文为大家分享了Redis实现信息已读未读状态提示的关键代码,希望可以给大家一些启发,具体内容如下

前提:

假如现在有2个模块需要提示消息:只要存在用户在上个时间点之后没有看过的信息就提示用户有新的信息

思路如下:

使用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){
    //归还连接
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Redis实现信息已读未读状态提示

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Redis实现信息已读未读状态提示

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

Android怎么实现未读消息小红点显示

今天小编给大家分享一下Android怎么实现未读消息小红点显示的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。使用 fragm
2023-06-29

如何使用Python实现微信消息的一键已读功能

这篇文章主要介绍了如何使用Python实现微信消息的一键已读功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。关键词微信消息一键已读 微信消息批量已读 微信消息全部已读1、微
2023-06-15

py3nvml实现GPU相关信息读取的示例分析

py3nvml实现GPU相关信息读取的示例分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在深度学习或者其他类型的GPU运算过程中,对于GPU信息的监测也是一
2023-06-26

使用 Python 实现微信消息的一键已读的思路代码

关键词 微信消息一键已读 微信消息批量已读 微信消息全部已读 1、微信消息怎么批量已读 2、微信消息可以一键已读吗 3、微信如何设置全部已读 目前支持 windows 微信 下载后双击运行即可 点击下载微信消息一键已读工具1、实现思路 St
2022-06-02

如何判断软件程序是否联网 联网状态提示信息Android实现

在项目中,经常需要判断是否有网络连接。最近学习了如何判断软件是否联网,如果没有联网,弹出提示信息,连接网络。 效果: (1)联网情况下: (2)不联网情况下:(3)点击“检测设置”:源码下载:http://xiazai.jb51.net
2022-06-06

编程热搜

目录