Redis的基本数据类型

作者 : admin 本文共1322个字,预计阅读时间需要4分钟 发布时间: 2024-06-9 共2人阅读

基本的数据类型包括:
字符串、列表、哈希、集合、有序集合

拓展的数据类型包括:
bitmaps位图
hyperloglog基数估计算法
geo 地理位置
streams 流

字符串

字符串经常用来存储单个值,用户信息、商品信息等或者二进制的数据。

字符串是基于SDS动态字符串来实现的,不仅可以保存二进制数据也可以保存文本数据。

哈希

存储对象或结构化的数据,用户资料、商品属性等。
通过key-value来存储数据。

列表

实现队列或栈功能,如任务队列、消息队列等,通过 LPUSH/RPOP 或 RPUSH/LPOP 操作实现先进先出(FIFO)或后进先出(LIFO)。

时间序列数据的存储,如用户浏览历史、日志记录等,利用列表的有序性。

Set(集合)

(1)使用场景:

存储唯一值集合,如标签系统中的用户标签、社交网络中的关注关系等。

实现交集、并集、差集等集合运算,如共同关注、推荐好友等。

(2)实现方式:

Redis Set 使用整数集合(int set)或哈希表(hashtable)实现。当集合元素全部为整数且范围合适时,使用整数集合以节省空间;否则使用哈希表来保证唯一性和快速增删查操作。

Zset有序集合

排行榜系统,如用户积分排名、热蒙文章等,根据score对成员进行排序。

底层采用跳表和字典相结合的方式实现。通过多级的索引结构实现快速的范围查询和排序。

其他的数据类型还包括

bitmaps 位图

适用于需要对大量二进制进行高效处理的场景,用户签到、活跃用户统计等。

HyperLogLog(基数估计算法)

用于近似统计大量唯一元素的数量,如网站独立访客数、唯一用户 ID 计数等,无需精确计数但对内存占用敏感的场景。

HyperLogLog 是一种概率算法,能在小内存空间内(通常几十到几百字节)提供对大规模数据集基数(不重复元素数量)的估算。Redis 将 HyperLogLog 算法实现为一种数据类型,提供 PFADD、PFCOUNT 等命令,允许用户向 HyperLogLog 结构添加元素,并获取估算的基数,误差率通常在 0.81% 以内,精确计数时不能使用。

Geo(地理位置)

适用于需要对带有地理位置信息的数据进行距离查询、范围查询、附近点查找等操作的场景,如地图服务、LBS 应用、社交网络中基于位置的好友推荐等。

(2)实现方式:

Redis 的 Geo 数据类型基于 ZSet 实现,通过将经纬度信息转换为分值,结合专用的地理空间操作命令(如 GEOADD、GEODIST、GEORADIUS、GEORADIUSBYMEMBER),实现了对地理位置数据的高效管理和查询。用户可以轻松地添加、删除地理位置信息,以及根据给定坐标或距离范围进行查询。

Streams(流)

(1)使用场景:
适用于处理持续追加的事件序列,如消息队列、活动日志、物联网设备数据流等,支持持久化存储、多消费者消费、消息分片等复杂需求。
(2)实现方式:
Redis Streams 是一种逻辑上类似于发布-订阅模式,但具有更强持久化、多消费组、消息回溯等特点的数据类型。每个 Stream 由一系列带有唯一 ID 和元数据(时间戳、字段值等)的消息组成。Redis 提供 XADD、XREAD、XGROUP 等命令,支持客户端以高并发、低延迟的方式生成、消费和管理数据流。

本站无任何商业行为
个人在线分享 » Redis的基本数据类型
E-->