前言介绍
有序集合
ZSET(有序集合)的概念
ZSET(有序集合)的定义
- 有序集合的键被称为成员(member)每个成员各不相同
- 有序集合的值被称为分值(score),分值必须是浮点数
ZADD命令:
它的全称叫做:zset add,将给定分值的成员添加到有序集合里面
因为有序集合是自排序的,所以也不像列表一样有左插入或右插入
指令:
# zadd key score value
zadd zset-weight 60 Kelvin
java代码
System.out.println(conn.zadd("zset-weight",60,"Kelvin"));
作用
返回
- “1” 存入成功
- “0” 存入失败,zset-weight已经存在该键值对
注意
其他案例
zadd zset-weight 40 Lina
zadd zset-weight 50 Oscar
zadd zset-weight 70 Mike
ZREM(移除)
指令
zrem zset-weight Mike
- 作用:移除zset-weight中键为Mike的元素
- 返回:"1" 表示移除元素数量为1
System.out.println(conn.zrem("zset-weight","Mike"));
ZCARD
指令
zcard high
java代码
System.out.println(conn.zadd("high",180,"Kelvin"));
System.out.println(conn.zadd("high",160,"Lina"));
System.out.println(conn.zadd("high",177,"Mike"));
System.out.println(conn.zcard("high"));
ZINCRBY
System.out.println(conn.zincrby("high",2,"Kelvin"));
ZCOUNT
System.out.println(conn.zcount("high",165,190));
ZRANK
System.out.println(conn.zrank("high","Kelvin"));
ZSCORE
System.out.println(conn.zscore("high","Kelvin"));
ZRANGE(获取)
ZRANGE全称:zset range key start end [WITHSCORES] ,取出zset-weight中索引值在[start,end]之间的成员,即该范围内的键值对,如果给定了可选WITHSCORES的选项,那么命令会将成员的分值也一并返回。
如果希望全部取出来,可以采用start=0,end=-1,可以看出来是一个环路,前开后闭。如果start选择了1,就无法获取第一个,拿出来的数据会少一个!而end=-1 则则说明获取到最后一个
指令:
zrange key start end withscores
zrange zset-weight 0 -1 withscores
返回
(1)"Lina"
(2)"40"
(3)"Oscar"
(4)"50"
(5)"Kelvin"
(6)"60"
(7)"Mike"
(8)"70"
System.out.println(conn.zrange("high",3,6));
System.out.println(conn.zrangeWithScores("high",3,6));
ZRANGEBYSCORE
需求场景
指令
zrangebyscore key start end [withscores]
zrangebyscore zset-weight 160 180 withscores
java代码
System.out.println(conn.zrangeByScore("high",160,180));
作用
返回
(1)"Lina"
(2)"40"
(3)"Oscar"
(4)"50"
(5)"Kelvin"
(6)"60"
ZREVRANGE
指令
zrevrange key start end withscores
zrevrange zset-weight 0 -1 withscores
java代码
System.out.println(conn.zrevrange("high",1,5));
ZREVRANGEBYSCORE
指令
zrevrangebyscore key start end
zrevrangebyscore high 180 160
Java代码
System.out.println(conn.zrevrangeByScore("high",180,160));
ZREVRANK
System.out.println(conn.zrevrank("high","Yellow"));
System.out.println(conn.zrevrank("high","Kelvin"));
ZREMRANGEBYRANK
在移除之间先查看一下redis中的数据
运行Java代码
System.out.println(conn.zremrangeByRank("high",2,4));
ZREMRANGENYSCORE
System.out.println(conn.zadd("high",174,"Jay"));
System.out.println(conn.zadd("high",169,"Pei"));
System.out.println(conn.zadd("high",186,"Jone"));
System.out.println(conn.zremrangeByScore("high",0,170));