当前位置: 首页 > news >正文

Redis 中常见的数据类型有哪些?

Redis 常见的数据类型包括 5 种基础类型(String、Hash、List、Set、Zset)和 3 种特殊类型(HyperLogLog、Bitmap、Geospatial)。以下是详细说明:

一、5 种基础数据类型

1. 字符串(String)
  • 特点
    • 二进制安全,可存储任意格式数据(如文本、JSON、图片二进制流)。
    • 支持原子性操作(如 INCR/DECR 计数器)。
    • 最大容量为 512MB。
  • 应用场景
    • 缓存简单键值对(如用户 Token、配置信息)。
    • 分布式锁(通过 SETNX 命令)。
    • 限流计数器(如接口请求次数限制)。
2. 哈希(Hash)
  • 特点
    • 键值对集合,适合存储对象(如用户信息、商品属性)。
    • 字段可独立操作(如修改 HSET user:1 name "Alice" 中的 name 字段)。
    • 内存优化:少量字段用压缩列表(ZipList),大量字段转哈希表。
  • 应用场景
    • 存储结构化数据(如用户年龄、昵称)。
    • 对象级更新(避免全量序列化开销)。
3. 列表(List)
  • 特点
    • 有序字符串集合,支持两端快速插入/删除(LPUSH/RPUSHLPOP/RPOP)。
    • 底层实现:双向链表(Redis 3.2 前)或快速列表(QuickList,结合链表和压缩列表)。
  • 应用场景
    • 消息队列(生产者-消费者模型)。
    • 最新动态列表(如社交媒体时间线)。
    • 分页查询(通过 LRANGE 获取子集)。
4. 集合(Set)
  • 特点
    • 无序唯一字符串集合,支持交集、并集、差集操作(如 SINTER/SUNION)。
    • 底层实现:哈希表(确保唯一性)。
  • 应用场景
    • 标签系统(如用户兴趣标签去重)。
    • 社交关系(如共同好友计算)。
    • 抽奖系统(随机选取不重复用户)。
5. 有序集合(Zset/Sorted Set)
  • 特点
    • 唯一字符串集合,每个元素关联一个分数(Score),按分数排序。
    • 支持范围查询(如 ZRANGEBYSCORE 获取排名区间)。
    • 底层实现:跳表(SkipList)或压缩列表。
  • 应用场景
    • 排行榜(如游戏积分、直播打赏)。
    • 延迟队列(按执行时间排序任务)。
    • 地理位置范围查询(结合 GEO 类型)。

二、3 种特殊数据类型

1. HyperLogLog
  • 特点
    • 概率性数据结构,用于近似计算唯一元素数量(如 UV 统计)。
    • 内存占用极低(12KB 可统计 2^64 个唯一值)。
  • 应用场景
    • 大规模去重统计(如日活用户数)。
2. Bitmap(位图)
  • 特点
    • 基于字符串的位操作,支持设置/获取位(SETBIT/GETBIT)。
    • 适合海量布尔值存储(如用户签到状态)。
  • 应用场景
    • 用户行为统计(如连续签到天数)。
    • 权限位掩码(如角色权限控制)。
3. Geospatial(地理空间)
  • 特点
    • 存储地理坐标(经纬度),支持附近位置查询(如 GEORADIUS)。
    • 底层实现:有序集合(按距离排序)。
  • 应用场景
    • LBS 服务(如附近商家、路径规划)。

三、其他数据类型

  • Stream(流):Redis 5.0 引入,支持消息队列和消费者组功能,弥补 List 在消息可靠性上的不足。

总结

Redis 通过丰富的数据类型,覆盖了从简单缓存到复杂结构化数据的多样化需求。合理选择数据类型可显著提升性能并简化开发逻辑。例如:

  • 简单缓存选 String
  • 对象存储选 Hash
  • 唯一值集合选 Set
  • 排序场景选 Zset
  • 大规模去重统计选 HyperLogLog

我正在编程导航学习项目课程,和其他编程爱好者一起交流进步,你也一起来吧
点击进入

相关文章:

  • 深度强化学习有什么学习建议吗?
  • telnetlib源码深入解析
  • FanControl(电脑风扇转速控制软件) v224 中文版
  • python学习打卡day23
  • DHCP自动分配IP
  • 仪器设备行业实验室管理现状 质检LIMS系统在仪器设备行业的应用
  • 十二、操作符重载
  • 项目售后服务承诺书,软件售后服务方案,软件安装文档,操作文档,维护文档(Word原件)
  • 在CentOS 7上仅安装部署MySQL 8.0客户端
  • 在Text-to-SQL任务中应用过程奖励模型
  • AI中的MCP是什么?MCP的作用及未来方向预测 (使用go-zero 快速搭建MCP服务器)
  • 如何使用主机名在 CMD 中查找 IP 地址?
  • M0基础篇之DAC
  • 华为行业认证是什么?如何考取华为行业认证?
  • BUUCTF 大流量分析(三) 1
  • HAProxy + Keepalived + Nginx 高可用负载均衡系统
  • [网络层]ICMP协议
  • Java:编程世界的常青树与数字化转型的基石
  • Maven 项目构建时编译错误问题排查与解决
  • IDEA+git将分支合并到主分支、IDEA合并分支
  • 讲一个香港儿童的故事,《劏房的天空》获“周庄杯”特等奖
  • 济南市委副秘书长吕英伟已任历下区领导
  • 观众走入剧院空间,人艺之友一起“再造时光”
  • 伤员回归新援融入,海港逆转海牛重回争冠集团
  • “仓促、有限”,美英公布贸易协议框架,两国分别获得了什么?
  • 万玲、胡春平调任江西省鹰潭市副市长