Redis 是一个内存数据存储系统,它支持多种数据类型,可帮助解决从缓存到队列再到事件处理的各种问题。开发过程中经常需要使用Redis做一些数据缓存,加速数据的获取和使用。下面介绍一下Redis中支持的数据类:
字符串(string):Redis 字符串存储字节序列,包括文本、序列化对象和二进制数组。因此,字符串是最基本的 Redis 数据类型。它们通常用于缓存,但它们支持其他功能,这些功能也允许您实现计数器并执行按位运算。Redis 中的字符串最大可以存储 512MB 的数据。
列表(list):列表是字符串值的链接列表。Redis 列表经常用于:实现堆栈和队列。为后台工作程序系统构建队列管理。列表的最大长度是2^32 - 1 (4,294,967,295)元素。
集合(set):集合是唯一字符串(成员)的无序集合。您可以使用 Redis 集有效地:跟踪唯一项目(例如,跟踪访问给定博客文章的所有唯一 IP 地址)。表示关系(例如,具有给定角色的所有用户的集合)。执行常见的集合操作,例如交集、并集和差分。集合的最大长度是2^32 - 1 (4,294,967,295)元素。
哈希(hash):Redis 哈希是结构化为字段值对集合的记录类型。您可以使用哈希来表示基本对象和存储计数器分组等。每个哈希最多可以存储2^32 - 1 (4,294,967,295)个字段值对。实际上,哈希仅受托管 Redis 部署的 VM 上的总体内存限制。
有序集合(sorted set):有序集合是按关联分数排序的唯一字符串(成员)的集合。当多个字符串具有相同的分数时,字符串将按字典顺序排序。排序集的一些用例包括:排行榜。例如,您可以使用排序集轻松维护评分最高分的有序列表。
流(Stream):流是一种数据结构,其作用类似于仅追加日志。您可以使用流实时记录和同时联合事件。Redis 流用例的示例包括:
事件溯源(例如,跟踪用户操作、点击等)
传感器监控(例如,现场设备的读数)
通知(例如,将每个用户的通知记录存储在单独的流中)
Redis 为每个流条目生成一个唯一的 ID。您可以在以后使用这些 ID 检索其关联的条目,或读取和处理流中的所有后续条目。Redis 流支持多种修剪策略(以防止流无限增长)和多个消费策略(请参阅 XREAD、XREADGROUP 和 XRANGE)。
地理空间索引(GEO):地理空间索引允许您存储坐标并搜索它们。此数据结构可用于查找给定半径或边界框内的邻近点。
位图( bitmaps):位图是字符串数据类型的扩展,可让您将字符串视为位向量。还可以对一个或多个字符串执行按位运算。位图用例的一些示例包括:集合成员对应于整数 0-N 的情况的有效集合表示形式。对象权限,其中每个位表示一个特定权限,类似于文件系统存储权限的方式。
位域(bitfields):位域允许您设置、递增和获取任意位长度的整数值。例如,您可以对从无符号 1 位整数到有符号 63 位整数的任何内容进行操作。这些值使用二进制编码的 Redis 字符串进行存储。位域支持原子读取、写入和递增操作,使其成为管理计数器和类似数值的不错选择。
HyperLogLog(HyperLogLog):HyperLogLog是一种估计集合基数的数据结构。作为一种概率数据结构,HyperLogLog 以完美的精度换取高效的空间利用率。Redis HyperLogLog 实现最多使用 12 KB,并提供 0.81% 的标准误差。
目前Redis支持的数据类型越来越多,平时使用到最多的就是常规的那几种比如字符串、哈希、列表、集合、有序集合。最近在才为gis业务场景引入GEO的使用,大大提高了数据查找的效率。其他的数据类型继续研究。