国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Redis > 正文

Redis實現信息已讀未讀狀態提示

2020-03-17 12:41:05
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了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";//用戶idString uid="1"; try {  //連接池獲取連接 jedis=   //添加到sortedset結果 權重為時間毫秒  jedis.hset("u-key-"+uid, cid, String.valueOf(System.currentTimeMillis())); }finally {  if(jedis!=null){    //歸還連接  }}

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



注:相關教程知識閱讀請移步到Redis頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 玉屏| 吴忠市| 南汇区| 会理县| 永安市| 普兰店市| 鹿泉市| 阳江市| 安义县| 桂东县| 北票市| 新密市| 瑞金市| 兴业县| 铁岭市| 利川市| 盐源县| 合江县| 如东县| 延庆县| 五家渠市| 桓台县| 军事| 周宁县| 两当县| 东方市| 杭锦后旗| 毕节市| 乌拉特后旗| 江都市| 老河口市| 新竹县| 泰兴市| 鄂尔多斯市| 东安县| 依兰县| 子洲县| 阳新县| 绿春县| 正定县| 台湾省|