最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Redis實現信息已讀未讀狀態(tài)提示

 更新時間:2016年04月15日 09:07:07   投稿:lijiao  
這篇文章主要介紹了Redis實現信息已讀未讀狀態(tài)提示的相關資料,需要的朋友可以參考下

本文為大家分享了Redis實現信息已讀未讀狀態(tài)提示的關鍵代碼,希望可以給大家一些啟發(fā),具體內容如下

前提:

假如現在有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){
    //歸還連接
  }
}

以上就是本文的全部內容,希望對大家的學習有所幫助。

您可能感興趣的文章:

相關文章

  • Redis教程(九):主從復制配置實例

    Redis教程(九):主從復制配置實例

    這篇文章主要介紹了Redis教程(九):主從復制配置實例,本文講解了Redis的Replication、Replication的工作原理、如何配置Replication、應用示例等內容,需要的朋友可以參考下
    2015-04-04
  • Centos7 Redis主從搭建配置的實現

    Centos7 Redis主從搭建配置的實現

    這篇文章主要介紹了Centos7 Redis主從搭建配置的實現,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • redis和redisson實現分布式鎖的操作方法

    redis和redisson實現分布式鎖的操作方法

    使用 Redis 實現分布式鎖,最直接的想法是利用 setnx 和 expire 命令實現加鎖,這篇文章主要介紹了redis和redisson實現分布式鎖的操作方法,需要的朋友可以參考下
    2024-03-03
  • redis實現動態(tài)字符串SDS

    redis實現動態(tài)字符串SDS

    簡單動態(tài)字符串是Redis的基本數據結構之一,用于存儲字符串和整型數據,本文主要介紹了redis實現動態(tài)字符串SDS,具有一定的參考價值,感興趣的可以了解一下
    2024-04-04
  • redis中隊列消息實現應用解耦的方法

    redis中隊列消息實現應用解耦的方法

    這篇文章主要給大家介紹了關于redis中隊列消息實現應用解耦的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-09-09
  • redis慢查詢日志的訪問和管理方式

    redis慢查詢日志的訪問和管理方式

    這篇文章主要介紹了redis慢查詢日志的訪問和管理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 虛擬機linux安裝redis實現過程解析

    虛擬機linux安裝redis實現過程解析

    這篇文章主要介紹了虛擬機linux安裝redis實現過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • 一文詳解Redis中的持久化

    一文詳解Redis中的持久化

    這篇文章主要介紹了一文詳解Redis中的持久化,持久化功能有效地避免因進程退出造成的數據丟失問題,當下次重啟時利用之前持久化的文件即可實現數據恢復
    2022-09-09
  • Redis?SortedSet數據類型及其常用命令總結

    Redis?SortedSet數據類型及其常用命令總結

    Redis的SortedSet是一個可排序的set集合,與Java中的TreeSet有些類似,但底層數據結構卻差別很大,這篇文章主要介紹了Redis?SortedSet數據類型及其常用命令詳解,需要的朋友可以參考下
    2024-06-06
  • Redis熱點Key問題的完整解決方案:

    Redis熱點Key問題的完整解決方案:

    熱點Key就像雙十一爆款商品,1%的Key承擔了90%的流量!本文將用電商案例,教你如何智能分流、化解壓力,并通過代碼示例講解的非常詳細,需要的朋友可以參考下
    2025-08-08

最新評論

武隆县| 伊金霍洛旗| 杭锦后旗| 萨嘎县| 樟树市| 托克逊县| 北海市| 齐齐哈尔市| 佛坪县| 绥阳县| 来宾市| 临西县| 阜阳市| 偏关县| 盖州市| 毕节市| 绥滨县| 大化| 麦盖提县| 沅江市| 台南县| 阿合奇县| 余干县| 靖远县| 南开区| 北碚区| 汾西县| 余姚市| 启东市| 昭苏县| 遂平县| 卓尼县| 康定县| 张家口市| 彭泽县| 抚宁县| 龙游县| 开江县| 双江| 安阳县| 大理市|