理解Redis数据类型
Redis支持的数据类型概述
Redis 是一个数据结构服务器。 其核心是,Redis 提供了一系列原生数据类型,帮助您解决从缓存到 队列再到 事件处理的各种问题。 以下是每种数据类型的简短描述,并附有更广泛概述和命令参考的链接。 每个概述都包括一个包含代码示例的全面教程。
核心数据类型
Redis Community Edition 实现了以下数据类型:
Redis Stack 和 Redis Enterprise 还包括一些扩展模块,这些模块实现了其他 有用的类型,例如 JSON。请参阅扩展数据类型 以获取完整列表。
字符串
Redis strings 是最基本的 Redis 数据类型,表示一个字节序列。 更多信息,请参阅:
列表
Redis lists 是按插入顺序排序的字符串列表。 更多信息,请参见:
集合
Redis sets 是无序的唯一字符串集合,它们的行为类似于您最喜欢的编程语言中的集合(例如,Java HashSets、Python sets 等)。 使用 Redis 集合,您可以在 O(1) 时间内(换句话说,无论集合元素的数量如何)添加、删除和测试存在性。 有关更多信息,请参阅:
哈希
Redis hashes 是作为字段-值对集合建模的记录类型。 因此,Redis hashes 类似于 Python 字典、Java HashMaps 和 Ruby hashes。 更多信息,请参阅:
有序集合
Redis sorted sets 是唯一字符串的集合,通过每个字符串的关联分数来维持顺序。 更多信息,请参阅:
流
一个Redis流是一种数据结构,其行为类似于仅追加日志。 流有助于按事件发生的顺序记录事件,然后将它们分发以进行处理。 有关更多信息,请参阅:
地理空间索引
Redis 地理空间索引 对于查找给定地理半径或边界框内的位置非常有用。 有关更多信息,请参阅:
位图
Redis bitmaps 允许你对字符串执行位操作。 更多信息,请参阅:
位域
Redis bitfields 高效地在字符串值中编码多个计数器。 位字段提供原子性的获取、设置和递增操作,并支持不同的溢出策略。 更多信息,请参阅:
扩展数据类型
Redis Stack 和 Redis Enterprise 包含一些扩展模块,这些模块实现了 以下数据类型:
这些默认不包含在 Redis Community Edition中。 有关Redis Community Edition原生支持的类型列表,请参见 Core data types。
JSON
Redis JSON 提供了 结构化的、分层的数组和键值对象,这些对象与流行的 JSON 文本文件格式相匹配。您可以将 JSON 文本导入 Redis 对象中,并访问、 修改和查询单个数据元素。 有关更多信息,请参阅:
概率数据类型
这些数据类型允许您以一种近似但高效的方式收集和计算统计数据。以下类型可用:
HyperLogLog
Redis HyperLogLog 数据结构提供了对大型集合基数(即元素数量)的概率估计。更多信息,请参阅:
布隆过滤器
Redis Bloom filters 允许你检查一个元素是否存在于一个集合中。更多信息,请参阅:
布谷鸟过滤器
Redis Cuckoo filters 允许你检查集合中是否存在某个元素。它们与 Bloom filters 类似,但在功能和性能之间有不同的权衡。更多信息,请参见:
t-digest
Redis t-digest 结构从数据值流中估计百分位数。更多信息,请参见:
Top-K
Redis Top-K 结构估计数据点在值流中的排名。 有关更多信息,请参阅:
Count-min 草图
Redis Count-min sketch 估计数据点在值流中的频率。 更多信息,请参阅:
时间序列
Redis time series 结构允许您存储和查询带有时间戳的数据点。 有关更多信息,请参阅:
添加扩展
要扩展包含的数据类型提供的功能,请使用以下选项之一:
- 编写您自己的自定义Lua服务器端函数。
- 使用modules API编写你自己的Redis模块,或者查看community-supported modules。
- 使用JSON、search、time series以及Redis Stack提供的其他功能。