redis操作5 对存储Zset的操作
有序集合zset 与 set相似 没有重复的元素的字符串集合
不同处为:zset每个成员关联了一个评分(score) ,被用来按照从低到高的方式排序集合中的成员
成员是唯一的,评分可以重复
底层具有两种结构(hash和跳跃表)
hash将值和评分存储起来
用跳跃表存储评分(可以更快的查找到评分和对应的值)(占空间变大,但获得的时间效率高)
跳跃表就是抛硬币策略大致保证上层关键节点分布均匀,并通过先遍历上层的关键节点判断是否在范围内,都不在范围内进入下一层从上层最后的节点开始遍历
在的话进入下一层从上层范围前一个进行遍历
添加值和评分(k1 为key)
zadd k1 200 java 300 c++ 400 mysql
删除值
zrem k1 java
统计评分范围内的数量
zcount k1 200 300
统计值的排名(从小到大排 最小的为0开始)
zrank k1 java
根据下标范围从小到大获取值和评分(下标在0到-1之间的)(不需要评分可删去withscores)
zrange k1 0 -1 withscores
根据评分范围从小到大获取值和评分(评分在300到500之间的)(不需要评分可删去withscores)
zrangebyscore k1 300 500 withscores
根据评分范围(从大到小)获取值和评分(评分在300到500之间的)(不需要评分可删去withscores)
zrevrangebyscore k1 300 500 withscores
增加元素的score值(10为增加量)
zincrby k1 10 java