`

Redis 有序集合类型概述

阅读更多
  • 有序集合类型的概念
  • 有序集合类型的底层实现
  • 有序集合类型的应用场景


有序集合类型概念
sorted set 是 set 的一个升级版本,它在set的基础上增加了一个顺序属性(元素关联了一个分数),这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。可以理解为有两列的 mysql 表,一列存 value,一列存顺序。操作中 key 理解为 zset 的名字。

底层实现
Redis  有序集合类型使用两种数据结构作为底层实现:
1. 压缩列表


2. 跳跃表
当有序集合对象保存的所有元素数量不超过128且元素成员长度都小于64字节时使用压缩列表;不满足这个条件的集合对象跳跃表。

当跳跃表(skiplist)是一种随机化的数据,这种数据结构以有序的方式在层次化的链表中保存元素,它的效率可以和平衡树媲美——查找、删除、添加等操作都可以在对数期望时间下完成,并且比起平衡树来说,跳跃表的实现要简单直观得多。



底层实现
Sorted set的使用场景与set类似,区别是set不是自动有序的,而sorted set可以通过用户额外提供一个优先级(score)的参数来为成员排序,并且是插入有序的,即自动排序。当你需要一个有序的并且不重复的集合列表,那么可以选择sorted set数据结构;使用sorted set可以固件有优先级的队列系统、排行榜应用、取top n操作。

有序集合类型与列表的比较,相同点:
二者都是有序的。
二者都可以获得某一范围的元素。
不同点:
列表通过链表实现,获取靠近两端的数据速度快,适合“新鲜事”和“日志”。
有序集合使用散列表和跳跃表实现,读取中间数据速度也快。
列表不能简单的调整元素的位置,而有序集可以。
有序集合比列表类型更耗内存。

Redis 有序集合类型的命令操作
  • zadd、zrem与zcard命令
  • 跟有序集合元素分数相关的命令
  • 跟有序集合元素排名相关的命令
  • 计算交集并集命令


ZADD
语法:ZADD  key  score   member

解释:用来向有序集合中添加一个元素和该元素的分数,返回值表示成功加入的元素数量(不包含原来已经存在的元素)。可一次添加多个元素及其元素的分数。

ZREM
语法:ZREM  key   member

解释:用来删除一个或多个元素,返回值表示成功删除的元素数量。

ZCARD
语法:ZCARD  key 

解释:用来获得集合中元素的数量。

ZSCORE
语法:SCORE  key   member

解释:用来获得元素的分数。

ZINCRBY
语法:ZINCRBY  key  increment  member

解释:用来增加一个元素的分数,返回值是更改后的分数。

ZRANGEBYSCORE
语法:ZRANGEBYSCORE  key  min   max  [ WITHSCORES ] [ LIMIT offset count ]

解释:按照分数从小到大的顺序返回分数在 min 和 max (包含 min 和 max)之间的元素。
若不包含端点,可在分数前加上“(”
Min 和 max 支持无穷大 inf
Withscore 返回的数据格式为 元素+分数
LIMIT 表示在获得元素的基础上从第 offset 个开始的 count 个元素

ZCOUNT
语法:ZCOUNT  key   min  max

解释:用来获得指定分数范围内的元素个数。
ZREMRANGEBYSCORE
语法:ZREMRANGEBYSCORE  key  min   max

解释:按照分数范围删除元素,返回值是删除的元素数量。

ZRANGE(ZREVRANGE)
语法:ZRANGE(ZREVRANGE)  key  start   stop  [ WITHSCORES ]

解释:按照元素分数从小(大)到大(小)的顺序返回索引从 start 到 stop 之间的所有元素。


ZRANK(ZREVRANK)
语法:ZRANK (ZREVRANK) key   member

解释:用来获得元素的排名,分数最小(大)的排名为0。

ZREMRANGEBYRANK
语法:ZREMRANGEBYRANK  key start  stop

解释:此命令用来删除指定排名范围内的所有元素,并返回删除的元素数量。

ZINTERSTORE
语法:ZINTERSTORE  dest  numkeys  key  [key …]   [ WEIGHTS weight ]
[ AGGREGATE  SUM|MIN|MAX ]

解释:此命令用来计算多个有序集合的交集并将结果存储在 dest 键中,返回值为 dest 键中的元素个数。
WEIGHTS 参数设置每个集合的权重,运算时,内部元素分数乘以该集合的权重
AGGREGATE 参数用来决定 dest 键中元素的分数,可求和、最大值、最小值
  • 大小: 50.8 KB
  • 大小: 24.8 KB
分享到:
评论

相关推荐

    Redis文档包含NoSQL概述等

    Redis以键值对的形式存储数据,支持多种数据结构如字符串、哈希、列表、集合和有序集合,这使得它在处理各种复杂数据操作时表现出色。此外,Redis还提供了发布/订阅、事务、持久化、复制和主从集群等功能,确保了...

    redis面试题之概述-介绍一下redis.zip

    3. 多种数据类型:Redis支持字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)等多种数据结构,适应各种应用场景。 4. 高性能:Redis能够处理每秒数十万次的请求,是许多高性能网站和应用...

    Redis使用教程,详解

    Redis 是一个高性能的键值存储数据库,支持多种数据类型,包括字符串、散列、列表、集合、有序集合等。Redis 的应用场景非常广泛,包括缓存、任务列表、网站访问统计数据、过期处理、应用排行榜、分布式集群架构中的...

    Redis支持的数据类型、相关命令和功能

    #### 一、Redis简介及数据类型概述 Redis是一种开源的、基于内存的键值存储系统,同时也被广泛视为一种数据结构服务器。它支持多种数据类型,包括字符串(Strings)、列表(Lists)、集合(Sets)、有序集合(Sorted Sets)...

    redis 使用说明 redis 使用说明

    Redis 支持 5 种基本数据类型,包括字符串、哈希、列表、集合、有序集合。每种数据类型都有其特点和应用场景。 字符串(String) 字符串是 Redis 中最基本的数据类型,用于存储简单的字符串值。Redis 提供了多种...

    redis 缓存技术学习笔记

    - **数据类型及其操作**:Redis支持的数据类型非常丰富,包括基本的字符串类型用于存储简单的文本或数值,列表类型用于按顺序存储多个元素,集合类型用于存储不重复的元素集合,以及有序集合类型用于存储包含分数的...

    linux系统redis免安装版

    - Redis(Remote Dictionary Server)是一种开源的、基于内存的数据结构存储系统,支持多种数据类型,如字符串、哈希、列表、集合、有序集合。 - Redis提供持久化功能,可以将内存中的数据定期保存到磁盘,防止...

    redis笔记.docx

    - **Sorted Set 有序集合类型**:集合中的元素可以按照分数排序。 Redis 最初是由 Salvatore Sanfilippo 在 2008 年为 LLOOGG 系统定制开发的,后来开源并得到了广泛的社区支持。目前,Redis 被众多知名互联网公司...

    redis6 新功能说明

    5. 有序集合(Zset):Redis 有序集合是一个有序的字符串集合,可以用来存储排名前十、排行榜等数据结构。 四、Redis 配置文件 Redis 配置文件用于指定 Redis 服务器的配置参数,如端口号、密码、最大连接数等。 ...

    Redis是一个高性能的键值对数据库,它支持多种数据结构,如字符串、列表、集合、有序集合和哈希表 以下是一些Redis命令的实践

    Redis提供了丰富的数据类型支持,包括但不限于字符串(strings)、列表(lists)、集合(sets)、有序集合(sorted sets)、哈希表(hashes)。本文将详细介绍Redis的基本用法,特别是通过一系列实际操作命令来展示...

    狂神说Redis笔记.pdf

    5. Zset(Sorted Set):有序集合,包含唯一字符串成员,每个成员都有一个分数,用于排序。 此外,Redis还提供了几种特殊数据类型: 6. Geo:地理空间数据类型,用于存储和检索地理位置信息。 7. HyperLogLog:概率...

    Redis学习笔记大全

    Redis有序集合是一种特殊的集合,元素是有序的。常用命令有: * ZADD:添加元素 * ZRANGE:score升序,获取指定索引范围的元素 * ZREVRANGE:score降序,获取指定索引范围的元素 * ZRANGEBYSCORE:按照score升序,...

    Redis可视化工具Redis Desktop Manager

    它以内存为主,可持久化到磁盘,支持多种数据结构如字符串、哈希、列表、集合和有序集合等。Redis因其高性能、低延迟和丰富的功能而广泛应用于缓存、消息队列、分布式锁等多种场景。 **2. Redis Desktop Manager...

    Redis 中文文档

    Redis 是一款开源的高性能键值数据库,它支持多种数据结构,如字符串、散列、列表、集合、有序集合等,并且提供了丰富的功能来支持这些数据结构的操作。Redis 可以用于缓存、消息队列等多种场景,因其高速读写性能和...

    spring整合redis项目

    1. RedisTemplate:这是Spring Data Redis的核心类,提供了键值操作的模板方法,如存取对象、哈希操作、列表、集合、有序集合等。 2. HashOperations:专门处理哈希数据类型的操作,如put、get、delete等。 3. ...

    Another-Redis-Desktop-Manager redis可视化工具

    2. **键值浏览**:显示Redis中的键值对,支持各种数据类型,包括字符串、哈希、列表、集合和有序集合。 3. **操作界面**:提供清晰的界面来执行基本的Redis命令,如SET、GET、DEL、HGETALL等,以及更复杂的操作,如...

    redis实战 完整版

    ### Redis实战完整版知识点概述 #### 一、Key-Value存储系统简介 ##### 1.1.1 Voldemort - **特点**: Voldemort是一款分布式键值存储系统,特别适用于大规模读写密集型的应用场景。 - **应用场景**: 常用于缓存、...

    redis 主从服务器配置

    它支持多种数据类型,包括字符串、列表、集合、有序集合等,并且提供了丰富的操作命令,例如 push/pop、add/remove、执行服务端的并集、交集、差别等。 Redis 安装和配置 安装 Redis 需要下载最新稳定版的 Redis ...

    Redis数据库 v7.2.4.zip

    1. 数据类型:Redis支持多种数据类型,包括字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Sets)和有序集合(Sorted Sets)。这些数据结构为存储和处理不同类型的数据提供了灵活性。 2. 内存存储:Redis...

    狂神说Redis笔记.rar

    Redis支持多种数据结构,如字符串、哈希、列表、集合和有序集合,这使得它在处理复杂数据结构时表现出色。此外,Redis还提供发布/订阅、事务、Lua脚本等高级功能。 二、Redis安装与配置 在Linux系统(如CentOS)上...

Global site tag (gtag.js) - Google Analytics