• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文为大家分享了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){
    //归还连接
  }
}

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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
MySQL表的增删改查基础教程发布时间:2022-02-08
下一篇:
PLSQL Developer连接oracle数据库配置教程发布时间:2022-02-08
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap