1,是一个set,保证了内部value的唯一性
2,给每个vlaue,设置了一个score值,代表了value的排序权重。
3,结构如图所示:
4,因为有score的特性,诸如此类 粉丝排行榜、学生分数排行榜的也可以使用该结构。
5,核心方法
1)添加 ZADD key score value [[score value] [score value] ...]
2)统计个数 ZCARD key
3)按分数统计 ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
4)移除某个元素 ZREM key value [value ...]
具体可以参考redis官网
6,当配置redis中有个key失效通知的事件没有配置,且redis不方便重启的时候。
可以考虑使用zset的形式,score传当前的毫秒数;然后客户端用定时器,每隔一段时间,从redis中,按分数的高低,取出响应的值,然后进行后续业务操作。
//往orderNos 放值
//获取当前时间
long t1 = System.currentMills();
//添加元素
redis.zadd("orderNos",t1,"orderNo1");
//获取当前时间
long t2 = System.currentMills();
redis.zadd("orderNos",t2,"orderNo2");
……
//从orderNos 拿值
List<Object> orderNos =redis.zrangeBySocre("orderNos",0,System.currentMills());
//利用orderNos处理业务逻辑
……
orderNos.forEach(orderNo -> {
redis.zrem("orderNos",orderNo);
});