Redis實現(xiàn)信息已讀未讀狀態(tài)提示
本文為大家分享了Redis實現(xiàn)信息已讀未讀狀態(tài)提示的關(guān)鍵代碼,希望可以給大家一些啟發(fā),具體內(nèi)容如下
前提:
假如現(xiàn)在有2個模塊需要提示消息:只要存在用戶在上個時間點之后沒有看過的信息就提示用戶有新的信息
思路如下:
使用hash存儲用戶上次看過的時間,使用sortedset存儲每個模塊的每個信息產(chǎn)生的時間
上代碼:
Map<String, String> dataMap = new HashMap<>();
Jedis jedis=null;
String uid="1";//用戶id
//分類數(shù)組
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)) {
//如果不存在,則設(shè)為有新信息
dataMap.put(value, "1");
} else {
//計算從上次操作時間到現(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)模塊添加時間:
Jedis jedis=null;
//c1模塊有新的信息
String cid="c1";
try {
//連接池獲取連接 jedis=
//添加到sortedset結(jié)果 權(quán)重為時間毫秒
long currentTimeMillis = System.currentTimeMillis();
jedis.zadd("c-key-"+cid, currentTimeMillis, String.valueOf(currentTimeMillis));
}finally {
if(jedis!=null){
//歸還連接
}
}
當(dāng)用戶點擊某個模塊時,更新用戶查看該模塊的上次時間:
Jedis jedis=null;
//c1模塊有新的信息
String cid="c1";
//用戶id
String uid="1";
try {
//連接池獲取連接 jedis=
//添加到sortedset結(jié)果 權(quán)重為時間毫秒
jedis.hset("u-key-"+uid, cid, String.valueOf(System.currentTimeMillis()));
}finally {
if(jedis!=null){
//歸還連接
}
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。
相關(guān)文章
SpringSession通過Redis統(tǒng)計在線用戶數(shù)量的實現(xiàn)代碼
這篇文章主要介紹了SpringSession通過Redis統(tǒng)計在線用戶數(shù)量,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04
Redis入門教程_動力節(jié)點Java學(xué)院整理
Redis是一款開源的、高性能的鍵-值存儲(key-value store)。下面通過本文大家分享Redis入門教程,感興趣的朋友參考下吧2017-08-08
Linux服務(wù)器安裝redis數(shù)據(jù)庫圖文教程
Redis是一個開源的使用ANSI C語言編寫、遵守BSD協(xié)議、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫,并提供多種語言的API。這篇文章主要介紹了Linux服務(wù)器安裝redis數(shù)據(jù)庫圖文教程,需要的朋友可以參考下2018-03-03

