redis学习04-SortedSet数据类型以及常用操作

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>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值