美文网首页
Redis5数据类型5-SortedSet集合

Redis5数据类型5-SortedSet集合

作者: 轻轻敲醒沉睡的心灵 | 来源:发表于2022-03-18 09:31 被阅读0次

1. SortedSet集合介绍

SortedSet集合与Set集合类似,有以下特点:

  • 数据是有序的,无重复的
  • 每一个元素都关联着一个浮点数分值(Score),并按照分值从小到大的顺序排列集合中的元素。分值可以相同,此时按照元素的字典序排序
  • 元素是字符串类型
  • 最多包含232-1个元素

2. SortedSet指令

2.1 增加一个或多个元素

zadd key score member [score member ...]

127.0.0.1:6379> zadd letters 10 a
1
127.0.0.1:6379> zadd letters 9 b 8 c 7.1 d 6.5 e 6.4 f 6.3 g
6
127.0.0.1:6379> zadd letters 6.2 g
0
127.0.0.1:6379>

2.2 返回集合中元素个数

  • zcard key
  • zcount key min max 查询指定分值内元素个数
127.0.0.1:6379> zcard letters
5
127.0.0.1:6379> zcount letters 7 9
3
127.0.0.1:6379>

2.3 查询指定索引区间元素

zrange key start stop start和stop是按照score从小到大,如果score相同,则按照字典序
带着 withscores 会显示分值
zrevrange key start stop 按照score从大到小排列

127.0.0.1:6379> zrange letters 0 -1
g
f
e
d
c
b
a
127.0.0.1:6379> zrevrange letters 0 -1
a
b
c
d
e
f
g
127.0.0.1:6379> zrange letters 2 4
e
d
c
127.0.0.1:6379>

2.4 移除一个或者多个元素

zrem key member [member ...] 元素不存在,自动忽略

127.0.0.1:6379> zrem letters g
1
127.0.0.1:6379> zrange letters 0 -1
f
e
d
c
b
a
127.0.0.1:6379> zrem letters f g
1
127.0.0.1:6379> zrange letters 0 -1
e
d
c
b
a
127.0.0.1:6379>

2.5 显示分值

zscore key member

127.0.0.1:6379> zscore letters c
8
127.0.0.1:6379>

注意:计算机并不能精确表达每一个浮点数,都是一种近似表达,所以有时候会显示出好多位小数

2.6 增加或者减少分值

zincrby key increment member increment为正数就是增加,为负数就是减少,可以用浮点型

127.0.0.1:6379> zincrby letters 1.8 c
9.8000000000000007
127.0.0.1:6379> zscore letters c
9.8000000000000007
127.0.0.1:6379> zincrby letters -5.6 c
4.2000000000000011
127.0.0.1:6379> zscore letters c
4.2000000000000011
127.0.0.1:6379>

2.7 返回元素的排名(索引)

zrank key member 升序的排名
zrevrank key member 降序的排名

127.0.0.1:6379> zrank letters c
0
127.0.0.1:6379> zrevrank letters c
4
127.0.0.1:6379>

2.8 返回指定分值区间元素

  • zrankbyscore key min max [WITHSCORES] [LIMIT offset count]
    类似于mysql的语法,开区间使用左小括号(,-inf和+inf表示负无穷和正无穷
  • zrevrankbyscore key min max [WITHSCORES] [LIMIT offset count]
127.0.0.1:6379> zrangebyscore letters 6 10
e
d
b
a
127.0.0.1:6379> zrangebyscore letters (7.1 10
b
a
127.0.0.1:6379> zrangebyscore letters (7.1 (10
b
127.0.0.1:6379> zrangebyscore letters -inf +inf
c
e
d
b
a
127.0.0.1:6379> zrangebyscore letters -inf +inf limit 1 3
e
d
b
127.0.0.1:6379>

2.9 条件移除

  • 移除指定排名范围的元素
    zremrangebyrank key start stop
  • 移除指定分值范围的元素
    zremrangebyscore key min max
127.0.0.1:6379> zremrangebyrank letters 0 1
2
127.0.0.1:6379> zcard letters
3
127.0.0.1:6379> zremrangebyscore letters 9.5 10.5
1
127.0.0.1:6379> zcard letters
2
127.0.0.1:6379> zrange letters 0 -1
d
b
127.0.0.1:6379>

2.10 并集

zunionstore destination numkeys key [key ...] [weights weight] [aggregate SUM|MIN|MAX]
numkeys指定key的数量,必须写,几个key合并就是几
weights选项,与前面设定的key对应,对应key中每一个score都要乘以这个权重
aggregate选项,指定并集结果的聚合方式

  • SUM:将所有集合中相同元素的score值之和作为结果集中该成员的score值,默认是这种方式
  • MIN:将所有集合中相同元素的score值中最小值作为结果集中该成员的score值
  • MAX:将所有集合中相同元素的score值中最大值作为结果集中该成员的score值
127.0.0.1:6379> zadd t1 90 a 80 b 70 c
3
127.0.0.1:6379> zadd t2 85 c 75 d 65 e 55 f
4
127.0.0.1:6379> zunionstore t3 2 t1 t2
6
127.0.0.1:6379> zrange t3 0 1000 withscores
f
55
e
65
d
75
b
80
a
90
c
155
127.0.0.1:6379> zunionstore t4 2 t1 t2 aggregate max
6
127.0.0.1:6379> zrange t4 0 100 withscores
f
55
e
65
d
75
b
80
c
85
a
90
127.0.0.1:6379>

2.11 交集

zinterstore destination numkeys key [key ...] [weights weight] [aggregate SUM|MIN|MAX]

127.0.0.1:6379> zinterstore t5 2 t1 t2 aggregate max
1
127.0.0.1:6379> zrange t5 0 100 withscores
c
85
127.0.0.1:6379>

3. SortedSet集合用处

因SortedSet集合是有序的,因此可以统计一些排名的。例如:云音乐的音乐排行榜、每天的笔记(以时间戳作为score)、热门消息、图书畅销榜等

相关文章

  • Redis5数据类型5-SortedSet集合

    1. SortedSet集合介绍 SortedSet集合与Set集合类似,有以下特点: 数据是有序的,无重复的 每...

  • Redis5数据类型4-Set集合

    1. Set集合介绍 Set数据有几个特点: 无序的、去重的 元素是字符串类型 最多包含232-1个元素 2. S...

  • Redis(二)-基本数据类型

    概述 本节主要分析Redis5大数据类型(对应上一节分析的RedisObject中Type属性:String/Li...

  • redis05集合

    无序集合 集合数据类型与列表数据类型相似,它们都可以存储多个元素;集合数据类型具备的特性是,根据两个集合求左差、右...

  • Redis5数据类型1-String

    上次说到Redis5提供六种数据类型来存储值:string字符串类型、hash散列类型、list列表类型、set集...

  • 快速整明白Redis中的整数集合到底是个啥

    整数集合简介 整数集合(intset)是Redis集合数据类型的内部编码之一,当集合数据类型中的元素都是整数并且元...

  • Redis Stream类型的使用

    一、背景 最近在看redis这方面的知识,发现在redis5中产生了一种新的数据类型Stream,它和kafka的...

  • Python学习打call第十一天:集合

    今天学习一种新的数据类型,集合,集合也是Python很常用到的基本数据类型~ 1.什么是集合 集合(set)是Py...

  • [Java]集合

    1. 集合概述 存储对象:数组(基本数据类型 & 引用数据类型);集合(引用数据类型)数组存储对象:一旦创建长...

  • Day12-13 Java集合

    集合 对象的存储:①数组(基本数据类型 & 引用数据类型) ②集合(引用数据类型) 数组存储数据的弊端:长度一旦初...

网友评论

      本文标题:Redis5数据类型5-SortedSet集合

      本文链接:https://www.haomeiwen.com/subject/irupdrtx.html