欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

前提:

假如現(xiàn)在有2個(gè)模塊需要提示消息:只要存在用戶在上個(gè)時(shí)間點(diǎn)之后沒有看過的信息就提示用戶有新的信息

思路如下:

使用hash存儲用戶上次看過的時(shí)間,使用sortedset存儲每個(gè)模塊的每個(gè)信息產(chǎn)生的時(shí)間

上代碼:

Map<String, String> dataMap = new HashMap<>();
 
Jedis jedis=null;
String uid="1";//用戶id
//分類數(shù)組
String []cagoryArray={"c1","c2"};
try {
  //連接池獲取連接 jedis=
  //此處獲取用戶的操作時(shí)間集合
  Map<String, String> map = jedis.hgetAll("u-key-"+uid);
  if (map == null) {
    map = new HashMap<>();
  }
  for (String value : cagoryArray) {
    //獲取某個(gè)分類下的上次操作時(shí)間
    String s = map.get(value);
    if (StringUtils.isBlank(s)) {
      //如果不存在,則設(shè)為有新信息
      dataMap.put(value, "1");
    } else {
      //計(jì)算從上次操作時(shí)間到現(xiàn)在的新的信息數(shù)量
      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){
    //歸還連接
  }
}


當(dāng)有新的信息產(chǎn)生,向相關(guān)模塊添加時(shí)間:

Jedis jedis=null;
//c1模塊有新的信息
String cid="c1";
 
try {
  //連接池獲取連接 jedis=
 
  //添加到sortedset結(jié)果 權(quán)重為時(shí)間毫秒
  long currentTimeMillis = System.currentTimeMillis();
  jedis.zadd("c-key-"+cid, currentTimeMillis, String.valueOf(currentTimeMillis));
 
}finally {
  if(jedis!=null){
    //歸還連接
  }
}

當(dāng)用戶點(diǎn)擊某個(gè)模塊時(shí),更新用戶查看該模塊的上次時(shí)間:

Jedis jedis=null;
//c1模塊有新的信息
String cid="c1";
//用戶id
String uid="1";
 
try {
  //連接池獲取連接 jedis=
 
  //添加到sortedset結(jié)果 權(quán)重為時(shí)間毫秒
  jedis.hset("u-key-"+uid, cid, String.valueOf(System.currentTimeMillis()));
 
}finally {
  if(jedis!=null){
    //歸還連接
  }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。

相關(guān)文章

  • Redis的LRU機(jī)制介紹

    Redis的LRU機(jī)制介紹

    這篇文章主要介紹了Redis的LRU機(jī)制介紹,Redis會按LRU算法刪除設(shè)置了過期時(shí)間但還沒有過期的key,而對于沒有設(shè)置過期時(shí)間的key,Redis是永遠(yuǎn)保留的,需要的朋友可以參考下
    2015-06-06
  • SpringSession通過Redis統(tǒng)計(jì)在線用戶數(shù)量的實(shí)現(xiàn)代碼

    SpringSession通過Redis統(tǒng)計(jì)在線用戶數(shù)量的實(shí)現(xiàn)代碼

    這篇文章主要介紹了SpringSession通過Redis統(tǒng)計(jì)在線用戶數(shù)量,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • Redis常用命令集的使用

    Redis常用命令集的使用

    作為一名Redis開發(fā)者或管理員,熟練掌握Redis的常用命令是必不可少的,本文主要介紹了Redis常用命令集的使用,具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11
  • 基于redis實(shí)現(xiàn)分布式鎖的原理與方法

    基于redis實(shí)現(xiàn)分布式鎖的原理與方法

    這篇文章主要給大家介紹了基于redis實(shí)現(xiàn)分布式鎖的原理與方法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用redis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Redis數(shù)組和鏈表深入詳解

    Redis數(shù)組和鏈表深入詳解

    這篇文章主要介紹了Redis數(shù)組和鏈表深入詳解,這是redis的基礎(chǔ)的知識點(diǎn),有感興趣的同學(xué)可以學(xué)習(xí)下
    2021-03-03
  • redis反序列化報(bào)錯原因分析以及解決方案

    redis反序列化報(bào)錯原因分析以及解決方案

    這篇文章主要介紹了redis反序列化報(bào)錯原因分析以及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • linux服務(wù)器中搭建redis6.0.7集群

    linux服務(wù)器中搭建redis6.0.7集群

    這篇文章主要介紹了linux服務(wù)器中搭建redis6.0.7集群的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • Redis入門教程_動力節(jié)點(diǎn)Java學(xué)院整理

    Redis入門教程_動力節(jié)點(diǎn)Java學(xué)院整理

    Redis是一款開源的、高性能的鍵-值存儲(key-value store)。下面通過本文大家分享Redis入門教程,感興趣的朋友參考下吧
    2017-08-08
  • 使用Redis實(shí)現(xiàn)向量相似度搜索

    使用Redis實(shí)現(xiàn)向量相似度搜索

    在自然語言處理領(lǐng)域,有一個(gè)常見且重要的任務(wù)就是文本相似度搜索,所以本文為大家介紹一下如何利用Redis實(shí)現(xiàn)向量相似度搜索,解決文本、圖像和音頻之間的相似度匹配問題,需要的可以了解下
    2023-07-07
  • Linux服務(wù)器安裝redis數(shù)據(jù)庫圖文教程

    Linux服務(wù)器安裝redis數(shù)據(jù)庫圖文教程

    Redis是一個(gè)開源的使用ANSI C語言編寫、遵守BSD協(xié)議、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫,并提供多種語言的API。這篇文章主要介紹了Linux服務(wù)器安裝redis數(shù)據(jù)庫圖文教程,需要的朋友可以參考下
    2018-03-03

最新評論