`

redis数据类型之有序集合 sorted set

阅读更多
Redis 有序集合(sorted set)
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。



redis 127.0.0.1:6379> zadd books 1 java
(integer) 1
redis 127.0.0.1:6379> zadd books 2 c++
(integer) 1
redis 127.0.0.1:6379> zadd books 3 c
(integer) 1
redis 127.0.0.1:6379> zadd books 4 lua
(integer) 1
redis 127.0.0.1:6379> zadd books 5 ruby
(integer) 1
redis 127.0.0.1:6379> zrange books 0 6
1) "java"
2) "c++"
3) "c"
4) "lua"
5) "ruby"
redis 127.0.0.1:6379> zrange books 0 6 withscores
1) "java"
2) "1"
3) "c++"
4) "2"
5) "c"
6) "3"
7) "lua"

以上通过命令 ZADD 向 redis 的有序集合中添加了三个值并关联上分数。
zaddkey score1 member1 [score2 member2]
向有序集合添加一个或多个成员,或者更新已存在成员的分数


获取成员数
redis 127.0.0.1:6379> zcard books
(integer) 5

zcount key min max 获取指定区间分数的成员数
redis 127.0.0.1:6379> zcount books 2 5
(integer) 4



zincrby 命令对有序集合中指定成员的分数加上增量 increment
可以通过传递一个负数值 increment ,让分数减去相应的值,比如 zincrby key -5 member ,就是让 member 的 score 值减去 5

。当 key 不存在,或分数不是 key 的成员时, zincrby key increment member 等同于 zadd key increment member当key不是有序

集类型时,返回一个错误。分数值可以是整数值或双精度浮点数。
示例:

redis 127.0.0.1:6379> zincrby books 1 1
"1"
redis 127.0.0.1:6379> zrange books 0 6  withscores
1) "1"
2) "1"
3) "java"
4) "1"
5) "c++"
6) "2"
7) "c"
"3"
9) "lua"
10) "4"
11) "ruby"
12) "5"



ZINTERSTORE destination numkeys key [key ...]
计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中



ZLEXCOUNT key min max
在有序集合中计算指定字典区间内成员数量



ZRANGE key start stop [WITHSCORES]
通过索引区间返回有序集合成指定区间内的成员



ZRANGEBYLEX key min max [LIMIT offset count]
通过字典区间返回有序集合的成员



ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]
通过分数返回有序集合指定区间内的成员



ZRANK key member
返回有序集合中指定成员的索引



ZREM key member [member ...]
移除有序集合中的一个或多个成员




ZREMRANGEBYLEX key min max
移除有序集合中给定的字典区间的所有成员



ZREMRANGEBYRANK key start stop
移除有序集合中给定的排名区间的所有成员



ZREMRANGEBYSCORE key min max
移除有序集合中给定的分数区间的所有成员



ZREVRANGE key start stop [WITHSCORES]
返回有序集中指定区间内的成员,通过索引,分数从高到底



ZREVRANGEBYSCORE key max min [WITHSCORES]
返回有序集中指定分数区间内的成员,分数从高到低排序




ZREVRANK key member
返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序




ZSCORE key member
返回有序集中,成员的分数值


ZUNIONSTORE destination numkeys key [key ...]
计算给定的一个或多个有序集的并集,并存储在新的 key 中


ZSCAN key cursor [MATCH pattern] [COUNT count]
迭代有序集合中的元素(包括元素成员和元素分值)


分享到:
评论

相关推荐

    Redis 有序集合(sorted set)1

    Redis 有序集合(Sorted Set)是一种特殊的集合数据结构,它结合了集合的无重复成员特性与分数的概念,可以根据成员的分数进行排序。有序集合中的每个成员都有一个与之关联的double类型的分数,这个分数用于决定成员...

    Redis有序集合类型(SortedSet)常用命令演示和实践练习代码

    有序集合(Sorted Set)是Redis中一个重要的数据结构,它结合了集合和哈希表的特点,支持对集合中的元素进行排序。在这个实战项目中,我们将深入探讨Redis有序集合类型(SortedSet)的常用命令,并通过Java实现商品...

    redis数据类型指令整理

    通过以上对Redis数据类型及其相关指令的整理,我们可以了解到Redis提供了非常丰富和灵活的数据操作能力,这使得Redis成为了一个在多种应用场景下都非常实用的工具。无论是在数据存储、缓存加速还是消息队列等场景,...

    Redis数据类型.docx

    Redis 是一个高性能的键值存储系统,它支持多种数据类型,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)以及有序集合(Sorted Set)。这些数据类型的特性使得Redis成为处理各种数据结构的理想选择...

    Redis实战_Redis实战中文完整版_Redis快速入门_Redis数据类型及操作_Redis常用

    - **有序集合(Sorted Set)**:与集合类似,但每个元素都有一个分数,可以按照分数排序。 3. **Redis命令操作**:书中会详细介绍每种数据类型的命令,如`SET`、`GET`、`HSET`、`LPOP`、`SADD`、`ZADD`等,以及事务...

    Redis数据类型归纳1

    本文主要探讨Redis中的数据类型,包括String、List、Set和Sorted Set,并结合实际应用讲解它们的特点和使用方法。 1. String String是最基本的数据类型,可以存储任何类型的数据,如数字、字符串等。在Redis中,...

    Redis数据类型

    5. 有序集合(Sorted Set) 有序集合与集合类似,也是无重复的元素集合,但它为每个元素附加了一个分数(score),根据分数进行排序。这使得有序集合可以用于排名、时间戳索引等场景。例如,`ZADD scores 100 "Alice" ...

    redis 数据类型详解 以及 redis适用场景场合

    #### Sorted Set 有序集合 - **简介**:有序集合与集合类似,但它还额外提供了一个分数来作为排序依据。 - **应用场景**: - 排行榜,根据分数对用户进行排名。 - 事件日志,根据时间戳进行排序。 ### Redis 的...

    数据结构Redis中数据类型对应的数据结构.pdf

    在Redis中,键的数据类型始终是字符串,而值的数据类型包括字符串、列表、字典、集合和有序集合。 1. 字符串(String):这是最基础的数据类型,对应数据结构是简单的字符串。在Redis中,字符串可以用来存储各种...

    redis面试题之数据类型.zip

    此外,还会考察如何利用Redis的数据类型特性优化性能,如使用List作为简单的消息队列,使用Set实现去重功能,使用Hash存储大量对象以减少网络传输,以及使用Sorted Set实现动态排序等。 了解和熟练掌握Redis的数据...

    Java redis五种数据类型在Java中的详细使用

    它支持五种基本数据类型:字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Sets)和有序集合(Sorted Sets)。在Java中,我们通常使用Jedis库来操作Redis。下面将详细介绍这五种数据类型在Java中的使用方法。 1. ...

    redis的list,set,hash,sorted set,skiplist 1

    下面将详细介绍 Redis 中的这些数据类型及其使用。 1. **列表(List)** 列表是有序的字符串集合,可以支持两端(头尾)的插入和删除操作。Redis 的 `LPUSH` 和 `RPUSH` 命令分别用于在列表头部和尾部添加元素,而 `...

    redis五种数据类型的使用场景

    ### Sorted Set(有序集合类型) Sorted Set是一个带有分数的集合,每个元素都会关联一个double类型的分数,用于按照分数进行排序。Sorted Set的常用命令包括zadd、zrange、zscore、zrevrange等。 #### 应用场景 ...

    Redis数据类型-03.docx

    其五大数据类型是Redis的核心,它们分别是字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。 1. **字符串(String)**: - String是最基础的数据类型,每个key对应一个value,value可以是...

    c#操作Redis的5种基本类型汇总

    * 简介:Sorted Set类型是Redis中的有序集合类型,类似于一个有序的集合。 * 应用场景:存储有序的数据,例如排行榜、排名前十的数据等。 * C#使用操作举例:使用ZAdd和ZRange方法来添加和读取Sorted Set类型的数据...

    超详细Redis数据库入门教程.docx

    Redis 支持五种数据类型:字符串(strings)、列表(lists)、集合(sets)、有序集合(sorted sets)和哈希(hashes)。 Redis 数据结构 – 字符串 字符串是 Redis 中最基本的数据类型,字符串的值可以是任何类型...

    02_redis 数据类型.pdf

    首先,Redis数据类型可以分为五种常用类型:string、hash、list、set、sorted_set。Redis自身是一个基于内存的存储系统,其中所有的数据都是采用key:value的形式存储的。key总是字符串类型,而value则根据数据类型的...

    redis 数据类型详解 以及 redis适用场景场合 - 血泪汗KG6

    5. 有序集合(Sorted Set) 有序集合与集合类似,但每个元素都有一个分数,使得集合内的元素可以按分数排序。这在需要按时间戳排序的场景中很实用,如高分榜、时间线等。例如,`ZADD scores 98 "张三" 92 "李四"` 可...

    java redis 各类型操作实例

    接下来,我们将通过以下几个主要的Redis数据类型来演示Java操作: 1. 字符串(String): Redis中的字符串是最基础的数据类型,可以通过`set`和`get`方法进行设置和获取。例如: ```java Jedis jedis = new ...

    52丨算法实战(一):剖析Redis常用数据类型对应的数据结构1

    5. **有序集合(Sorted Set)** - 有序集合与集合类似,但每个元素都有一个分数(score),根据分数进行排序。有序集合的实现结合了字典和跳跃列表(Skip List)两种数据结构。字典用于存储元素和分数的映射,而...

Global site tag (gtag.js) - Google Analytics