一种 数据结构 是一个组织好的数据集合。它是一种用于存储数据的独特格式,以实现特定目的。它用于访问数据并轻松管理数据。数据结构是一种组织和存储计算机中数据的技术手段,以便我们能够更有效地对存储的数据执行操作。数据结构在计算机科学和软件工程领域有着广泛而多样化的应用范围。
考虑到开发人员,与简单的键值数据存储不同,Redis 数据结构提供灵活的方式来为现代应用程序中的许多用例建模数据。Redis 先进的数据结构使您能够用更少的代码行来开发应用程序,以存储、访问和使用您的数据,并实现强大而快速的内存中处理。
这些数据结构避免了与每次数据库操作时在应用程序对象和数据库实体之间进行转换相关的开销。
Redis 字符串是 Redis 最通用的构建块之一,是一种二进制安全的 数据结构。字符串是一种字节(或字)数组数据结构,它使用某种字符编码存储元素(通常是字符)的序列。它可以存储任何数据 - 字符串、整数、浮点值、JPEG 图像、序列化 Ruby 对象或您想要它携带的任何其他内容。对整个字符串或部分进行操作,并递增或递减整数和浮点数。
Redis 集合数据结构存储一组唯一的成员。使用集合,您可以添加、获取或删除成员,检查成员资格,或检索随机成员。使用排序算法,您还可以执行集合操作,例如交集、并集和集合差,并计算集合基数。
Redis 有序集合包含一组唯一的成员,按浮点分数排序。与集合一样,您可以添加、获取或删除单个成员,并执行集合操作,例如并集、交集、集合差,以及计算基数。此外,您还可以根据分数或成员值查询集合、聚合、过滤和排序结果。
Redis 列表保存字符串元素的集合,根据它们的插入顺序进行排序。从两端推送或弹出项目,根据偏移量进行修剪,读取单个或多个项目,或按值和位置查找或删除项目。您还可以进行阻塞调用以进行异步消息传输。
Redis 哈希是一种数据类型,它表示字符串字段和字符串值之间的映射。Redis 哈希结构存储一组字段-值对,设计为不占用太多空间,使其成为表示数据对象的理想选择。它提供添加、获取或删除单个项目、获取整个哈希或使用哈希中的一个或多个字段作为计数器的能力。
Redis 位图是一种紧凑的数据结构,用于存储二进制逻辑和状态。它提供命令来获取和设置给定位置的位值,并在多个位图键之间执行 AND、OR、XOR 和 NOT 操作。
位域提供了一种高效、紧凑的方式来在一个数组中实现多个计数器。它允许在给定位置递增和递减计数器,并在计数器达到其上限时标记溢出。
Redis HyperLogLog 是一种概率数据结构,用于在恒定的内存大小下计算唯一值(集合基数)。您可以使用内存效率添加和计算大量唯一项目,并将两个或多个 HyperLogLog 数据结构合并为一个。
地理空间索引提供了一种极其高效且简单的方式来管理和使用 Redis 中的地理空间数据。您可以添加具有纬度和经度的唯一项目,计算对象之间的距离,并查找给定半径范围内来自某个位置的成员。
Redis 流是一种功能强大的数据结构,用于管理高速数据流(如消息队列)。凭借开箱即用的分区、复制和持久性,它可以在亚毫秒级延迟下捕获和处理每秒数百万个数据点。Redis 流基于高效的基数树实现(一种算法,其中每个唯一子节点都与其父节点合并),这使得范围查询和查找查询变得极其快速。它使用异步调用将生产者和消费者连接起来,并支持消费者组。
可以使用 Redis HASH 和 LIST 数据结构来表示树。Redis 不支持嵌套数据结构,因此您需要将数据和父属性表示为 Redis HASH,将子项表示为 Redis LIST。
通常,列表只是一系列有序元素:10,20,1,2,3 是一个列表。但是,使用数组实现的列表的属性与使用链表实现的列表的属性非常不同。Redis 列表通过链表实现,这意味着即使列表中有数百万个元素,在列表的头部或尾部添加新元素的操作也是在恒定时间内完成的。通过索引访问元素在使用数组实现的列表中非常快(恒定时间索引访问),而在使用链表实现的列表中则不那么快(操作需要与访问元素的索引成比例的工作量)。
Redis 列表通过链表实现,因为对于数据库系统来说,能够快速将数据元素添加到很长的列表中至关重要。
在处理来自 Web 客户端的请求时,有时操作执行的时间比我们想花的时间更长。Redis 可以通过将有关要执行的任务的信息放入队列中来延迟这些操作,该队列可以在以后进行处理。这种将工作延迟到任务处理器的做法称为任务队列。
Redis 可以支持“先进先出”(FIFO)、“后进先出”(LIFO)和优先级队列。对于基于列表的队列,Redis 可以处理每个队列的单个调用、每个队列的多个回调以及简单的优先级。
向量字段允许您在搜索命令中使用向量相似性查询。向量相似性使您能够加载、索引和查询存储为 Redis 哈希中字段的向量。
链表提供了高效的节点重新排列功能和顺序节点访问方法,并且链表的长度可以通过添加和删除节点灵活地调整。链表在 Redis 中被广泛使用。例如,列表的底层实现是链表。当列表包含大量元素或列表中的元素都是比较长的字符串时,Redis 将使用链表。
Redis 支持字符串、哈希、列表、集合和有序集合。