Redis实战(7)-SortedSet之认识有序集合(命令行与代码实战)

摘要:缓存中间件Redis拥有许多丰富、重要且有趣的数据结构,前文介绍的字符串String、列表List和集合Set便是其中的佼佼者,本文以及后续篇章介绍的有序集合SortedSet和哈希Hash数据结构亦是如此,毫不夸张的说,当我们谈及Redis的应用场景时,这几种数据结构几乎都会涉及。本文我们将以命令行和代码的形式继续认识一下Redis的有序集合SortedSet

内容:在前面篇章中,我们给各位小伙伴介绍并实战了缓存中间件Redis的集合Set,介绍了并实战了其核心的几个特性,包括“唯一性/不重复性”和“无序性”,其中还介绍了一种比较典型的应用场景 ~ 利用集合Set实现“在线考试系统中考生如何获取随机、唯一且每份试卷的题目是乱序不一样的试题列表”。

而从本文开始,我们将给大家介绍 集合Set 的“孪生兄弟”,即有序集合SortedSet,这种数据结构延伸了集合Set的“元素唯一/不重复”的特性,但却有一点不同于集合Set,那就是SortedSet的成员元素具有“有序性”,而其“有序性”的实现是通过“添加成员时附带一个double类型的参数:分数”,从某种程度上讲,集合Set 和 有序集合SortedSet 可以说是一对“双胞胎”!

正是由于有序集合SortedSet的这两大特性,使得它本身也具有相当广泛的应用场景,比如“排行榜”便是其中相当常见的一种业务场景,我们将在后面的篇章中给各位小伙伴介绍如何利用有序集合SortedSet + 实际的代码实战“游戏充值排行榜”的实现!

本文我们将首先以命令行 + 代码的方式来认识并实战SortedSet,当作是对人家的一种认识吧!

对于有序集合SortedSet的常见命令,debug在这里给各位小伙伴贴了一张总览图,如下图所示,可以说是包含了SortedSet常见的诸多操作了:

下面我们再重点挑出几个使用相当频繁的命令吧!

(1)往集合添加N个成员,其中每个成员需要带上一个double类型的参数:分数

ZADD manScores 10 jack 11 debug 12 michael 13 mary 15 maria 20 xiuluo

返回值:(integer) 6

(2)返回集合当中成员的分数值:  

ZSCORE  manScores  jack

返回值:"10"

(3)获取集合中的成员总数:  

ZCARD manScores

返回值:(integer) 6

(4)为集合中指定的成员加上增量分数:  

ZINCRBY manScores 10 jack

返回值:"20"

(5)通过分数返回集合中指定区间内的成员:  

ZRANGEBYSCORE manScores 15 20 WITHSCORES

返回值:
1) "maria"
2) "15"
3) "jack"
4) "20"
5) "xiuluo"
6) "20"

(6)按照分数从低到高的排序-返回集合对应的所有成员:  

ZRANGE manScores 0 10 WITHSCORES

返回值:
 1) "debug"
 2) "11"
 3) "michael"
 4) "12"
 5) "maria"
 6) "15"
 7) "jack"
 8) "20"
 9) "xiuluo"
10) "20"

(从高到低的排序:ZREVRANGE)

(7)返回集合中指定成员的排名(从低到高排名-排名从0开始):

ZRANK manScores maria

返回值:(integer) 2

(从高到低的排名:ZREVRANK)

更多请见:http://www.mark-to-win.com/tutorial/51069.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值