这篇文章的关键代码实现信息,读过Redis未读状态
提示。我希望你能给你一些灵感。
详情如下
前提:
如果现在有2个模块需要提示
消息:只要有
用户在上一个时间点之前没有看到的信息,它就会提示用户获得新的信息。
以下观点如下:
使用哈希表来存储用户上次看到的时间,并使用SortedSet存储通过各个模块每个模块生成的时间
上面的代码:
地图数据映射为新的HashMap <>();
绝地武士绝地武士= null;
字符串UID = 1 / / ID的用户;
分类/数组
字符串{ } caryarray = {C1
{试
/ /
连接绝地武士=连接池
用户在这里的
操作时间来获取/
设置 地图地图= jedis.hgetall(U-Key -+
用户名);
如果(map = NULL){
地图=新的HashMap <>();
}
对于(字符串值:caryarray){
最后一次得到分类操作
string s = map.get(价值);
如果(stringutils.isblank(S)){
如果它不存在,则设置为具有新信息。
DataMap.put(价值,1 );
{人}
从最后一次操作时间到现在计算新信息的数量
长zcount = jedis.zcount(升C键-+价值,double.parsedouble(S)、System.currentTimeMillis()));
如果(zcount = = null | | zcount <= 0){
不存在或小于或等于0,没有新信息。
DataMap.put(价值,0 );
{人}
DataMap.put(价值,1 );
}
}
}
{ }最后
如果(绝地武士!= NULL){
返回连接
}
}
生成新信息时,将时间添加到相关模块:
绝地武士绝地武士= null;
模块具有新的信息
字符串;
{试
/ /连接绝地武士=连接池
重量增加了SortedSet /毫秒的时间
长currentTimeMillis
方法= System.currentTimeMillis();
Jedis.zadd(升C键-+ CID,currentTimeMillis方法,String.valueOf(currentTimeMillis方法));
{ }最后
如果(绝地武士!= NULL){
返回连接
}
}
当用户单击模块时,更新用户以查看模块的最后一次。
绝地武士绝地武士= null;
模块具有新的信息
字符串;
用户
字符串UID =1;
{试
/ /连接绝地武士=连接池
重量增加了SortedSet /毫秒的时间
jedis.hset(U-Key -+ UID,CID,string.valueof(system.currenttimemillis())));
{ }最后
如果(绝地武士!= NULL){
返回连接
}
}
以上是本文的全部内容,希望能对大家有所帮助。