redis学习04-SortedSet数据类型以及常用操作
SortedSet数据结构:
redis的SortedSet是一个可排序的set集合与java中的TreeSet有些类似,底层数据结构却不同,Java的TreeSet的底层是红黑树实现。SortedSet中的每一个元素都带有一个score属性,可以基于score属性对元素排序,底层的实现是一个跳表(SkipList)加hash表
SortedSet 常用操作:
- ZADD key score member 添加一个或多个元素,指定score分数(排序依据)和member元素名
127.0.0.1:6379> ZADD brand 1 msi 2 asus 3 gigabyte 4 colorful
(integer) 4
127.0.0.1:6379>
- ZSCORE key member 获取一个关联的元素的score值
127.0.0.1:6379> ZSCORE brand msi
"1"
127.0.0.1:6379>
- ZRANK key member 根据元素的score值来判断元素的排名并返回,默认是升序,如果要降序要使用ZREVRANK key member (在RANK前面加REV)并且排名是从0开始计数
(integer) 0
127.0.0.1:6379>
127.0.0.1:6379> ZREVRANK brand msi
(integer) 3
127.0.0.1:6379>
- ZCARD key 获取SortedSet中的元素的个数
127.0.0.1:6379> ZCARD brand
(integer) 4
127.0.0.1:6379>
- ZCOUNT key min max 获取给定的score范围的SortedSet中的元素的个数
127.0.0.1:6379> ZCOUNT brand 1 2
(integer) 2
127.0.0.1:6379>
brand中分数为1和2的分别是msi和asus
- ZINCRBY key increment member 给SortedSet中指定的key中的某个元素的score值进行运算,正数为加,负数为减
127.0.0.1:6379> ZINCRBY brand 2 colorful
"6"
127.0.0.1:6379>
- ZRANGE key min max 返回SortedSet中给定排名的元素
- ZRANGEBYSCORE key min max 返回SortedSet中给定score的范围的元素
127.0.0.1:6379> zrangebyscore brand 0 3
1) "msi"
2) "asus"
3) "gigabyte"
127.0.0.1:6379>
*ZREM key member 删除SortSet中指定key的某个元素
127.0.0.1:6379> ZREM brand colorful
(integer) 1
127.0.0.1:6379>
- ZDIFF、ZINTER、ZUNION 求差、交、并集和set的用法一样
SortedSet命令练习:
将班级的下列学生得分存入redis的SortedSet中
Jack 85, Lucy 89, Rose 82, Tom 95, Jerry 78, Amy 92, Miles 76
127.0.0.1:6379> ZADD scores 85 Jack 89 Lucy 82 Rose 95 Tom 78 Jerry 92 Amy 76 Miles
(integer) 7
127.0.0.1:6379>
并实现下列功能:
- 删除Tom同学
127.0.0.1:6379> ZREM scores Tom
(integer) 1
127.0.0.1:6379>
- 获取Amy同学的分数
127.0.0.1:6379> ZSCORE scores Amy
"92"
127.0.0.1:6379>
- 获取Rose同学的排名
127.0.0.1:6379> ZRANK scores Rose
(integer) 2
127.0.0.1:6379>
- 查询80分以下的同学有多少个
127.0.0.1:6379> ZCOUNT scores 0 80
(integer) 2
127.0.0.1:6379>
- 给Amy同学加2分
127.0.0.1:6379> ZINCRBY scores 2 Amy
"94"
127.0.0.1:6379>
- 查出成绩前3名的同学
127.0.0.1:6379> ZREVRANGE scores 0 2
1) "Amy"
2) "Lucy"
3) "Jack"
127.0.0.1:6379>
- 查出成绩80分以下的所有同学
127.0.0.1:6379> ZRANGEBYSCORE scores 0 80
1) "Miles"
2) "Jerry"
127.0.0.1:6379>