Redis基本类型之SortedSet类型


Redis基本类型之SortedSet类型

一、概述

1、简介

Redis的SortedSet是一个可排序的set集合,与Java中TreeSet有些类似,但底层数据结构却差别很大。SortedSet中的每一个元素都带有一个score属性,可以基于score属性对元素排序,底层的实现是一个跳表(SkipList)加hash表。

2、特性

  • 无序
  • 可排序
  • 元素不重复
  • 查询速度快
  • 下标索引 0 开始

因为SortedSet的可排序特性,经常被用来实现排行榜这样的功能。

二、SortedSet类型的常见命令

命令作用
zadd添加一个或多个元素到 sorted set,如果已经存在则更新其score值
zrem删除sorted set中的一个指定元素
zscore获取sorted set中的指定元素的score值
zrank获取sorted set中的指定元素的value
zrevrank获取sorted set中的指定元素的排名
zcard获取sorted set中的元素个数
zcount统计score值在给定范围内的所有元素的个数
zincrby让sorted set中的指定元素自增,步长为指定的increment值
zrevrange按照score排序后,获取指定排名范围内的元素,前几名
zrange按照score排序后,获取指定排名范围内的元素,后几名
zrangebyscore按照score排序后,获取指定score范围的元素
zdiff、zinter、zunion求差集、交集、并集

注意:所有的排名默认都是升序,如果要降序则在命令的最后面添加 REV 即可

三、操作案例

1、添加学生(zadd)

  • zadd:添加一个或多个元素到 sorted set,如果已经存在则更新其score值
  • Jack 85,Lucy 89,Rose 82,Tom 95,Jerry 78,Amy 92,Miles 76
192.168.8.137:6379> ZADD stus 85 Jack 89 Lucy 82 Rose 95 Tom 78 Jerry 92 Amy 76 Miles
(integer) 7

2、删除Tom同学(zrem)

  • zrem:删除sorted set中的一个指定元素
192.168.8.137:6379> ZREM stus Tom
(integer) 1

3、获取Amy同学的分数(zscore)

  • zscore:获取sorted set中的指定元素的score值
192.168.8.137:6379> ZSCORE stus Amy
"92"

4、获取Rose同学的value(zrank)

  • zrank:获取sorted set中的指定元素的value
192.168.8.137:6379> ZRANK stus Rose
(integer) 2

5、获取Amy同学的排名(zrevrank)

  • zrevrank:获取sorted set中的指定元素的排名
192.168.8.137:6379> ZREVRANK stus Amy
(integer) 0

6、获取同学个数(zcard)

  • zcard:获取sorted set中的元素个数
192.168.8.137:6379> ZCARD stus
(integer) 6

7、查询80分以下有几个学生(zcount)

  • zcount:统计score值在给定范围内的所有元素的个数
192.168.8.137:6379> ZCOUNT stus 0 80
(integer) 2

8、给Amy同学加2分(zincrby)

  • zincrby:让sorted set中的指定元素自增,步长为指定的increment值
192.168.8.137:6379> ZINCRBY stus 2 Amy
"94"

9、查出成绩前3名的同学(zrevrange)

  • zrevrange:按照score排序后,获取指定排名范围内的元素,前几名
192.168.8.137:6379> ZREVRANGE stus 0 2
1) "Amy"
2) "Lucy"
3) "Jack"

10、查出成绩后3名的同学(zrange)

  • zrange:按照score排序后,获取指定排名范围内的元素,后几名
192.168.8.137:6379> ZRANGE stus 0 2
1) "Miles"
2) "Jerry"
3) "Rose"

11、查出成绩80分以下的所有同学(zrangebyscore)

  • zrangebyscore:按照score排序后,获取指定score范围的元素
192.168.8.137:6379> ZRANGEBYSCORE stus 0 80
1) "Miles"
2) "Jerry"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值