Redis 最常用的 5 种数据类型

Redis 支持多种灵活的数据类型,每种类型针对特定场景优化。以下是 **Redis 最常用的 5 种数据类型**及其核心特点和应用场景:


1. 字符串(String)

  • 描述:最基本的数据类型,可存储文本、数字(整数/浮点数)或二进制数据(≤512MB)。
  • 常用命令
    • SET key value:设置值
    • GET key:获取值
    • INCR key:原子递增(计数器)
    • SETNX key value:不存在时才设置(分布式锁)
  • 场景
    • 缓存(HTML片段、用户信息)
    • 计数器(访问量、点赞数)
    • 分布式锁(SETNX

2. 哈希(Hash)

  • 描述:键值对集合,适合存储 对象(如用户信息)。
  • 常用命令
    • HSET key field value:设置字段值
    • HGET key field:获取字段值
    • HGETALL key:获取所有字段和值
    • HINCRBY key field increment:递增字段值
  • 场景
    • 用户资料存储(key=用户ID,field=姓名/年龄等)
    • 商品属性管理(key=商品ID,field=价格/库存等)
    • 优势:可单独操作字段,避免序列化整个对象。

3. 列表(List)

  • 描述:按插入顺序排序的 字符串列表,支持双向操作。
  • 常用命令
    • LPUSH key value:左侧插入
    • RPUSH key value:右侧插入
    • LPOP key:左侧弹出
    • LRANGE key start stop:获取范围数据
  • 场景
    • 消息队列(LPUSH + BRPOP 实现生产者-消费者)
    • 最新动态(如朋友圈时间线)
    • 日志记录(按时间顺序存储)

4. 集合(Set)

  • 描述无序且唯一 的字符串集合,支持交并差运算。
  • 常用命令
    • SADD key member:添加元素
    • SMEMBERS key:获取所有元素
    • SINTER key1 key2:求交集
    • SISMEMBER key member:判断元素是否存在
  • 场景
    • 标签系统(如文章标签)
    • 共同好友(SINTER 求交集)
    • 唯一性控制(如抽奖中奖用户)

5. 有序集合(Sorted Set / Zset)

  • 描述:带 分数(score) 的集合,元素按分数排序(分数可重复,值唯一)。
  • 常用命令
    • ZADD key score member:添加元素
    • ZRANGE key start stop:按排名范围获取
    • ZRANGEBYSCORE key min max:按分数范围获取
    • ZRANK key member:获取排名
  • 场景
    • 排行榜(如游戏分数排名)
    • 延时队列(分数=执行时间戳)
    • 热点数据排序(分数=访问次数)

其他实用类型补充:

  • 位图(Bitmap)
    通过位操作存储布尔值(如用户签到记录,SETBIT user:sign:2024 100 1)。
  • HyperLogLog
    超小内存统计去重计数(如UV统计,误差率0.81%)。
  • 地理空间(GEO)
    存储经纬度,计算距离(GEODIST)、附近位置(GEORADIUS)。
  • 流(Stream)(Redis 5.0+):
    持久化消息队列,支持消费者组(类似Kafka)。

选择数据类型的关键原则:

  1. 数据结构匹配:存储对象用 Hash,排序用 Zset,去重用 Set。
  2. 操作效率:Zset 按分数范围查询复杂度 O(log N),Hash 单字段操作 O(1)。
  3. 内存优化:小对象用 String,大对象用 Hash 分字段存储。

💡 示例场景对比

  • 用户信息存储
    • ❌ 错误:用 String 存储整个 JSON(修改需全量读写)
    • ✅ 正确:用 Hash 分字段存储(可单独更新年龄)
  • 排行榜
    • ❌ 错误:用 List + 手动排序
    • ✅ 正确:用 Zset 自动按分数排序

掌握这些类型及其适用场景,能极大提升 Redis 使用效率!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/94231.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/94231.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【嵌入式】RK3588 对比 NVIDIA Jetson,Radxa Rock 5B vs Orange Pi 5 Max

RK3588这个芯片,适合AI应用么,为什么这么贵呢 AI 边缘盒子里的旗舰芯 深度分析一下 RK3588(瑞芯微 Rockchip RK3588) 为什么被很多人关注在 AI 应用,以及它价格偏高的原因。 🧩 1. RK3588 的基本情况 制程:8nm(Samsung 8nm LP) CPU:8 核 big.LITTLE 架构(4 Cortex-…

暴雨让高性能计算更“冷静”

当AI大模型的参数突破万亿,当深地探测的精度迈向微米,当数字经济的脉搏与千行百业深度共振,算力已成为驱动时代向前的核心引擎。然而,传统风冷技术在高密度算力需求面前渐显乏力——机柜内的热浪如同无形的枷锁,既制约…

SpringAI集成MCP

文章目录1_调用公用MCP2_Stdio方式3_Stdio实现原理4_SSE方式5_自定义MCP客户端6_MCP Server权限控制SpringAI 通过 SpringBoot 集成扩展了 MCP Java SDK ,提供了客户端和服务端 starter,让 AI 应用程序快速支持 MCP。接下来直接演示。 1_调用公用MCP 在…

Spring Start Here 读书笔记:第10章 Implementing REST services

REST 服务可用于实现两个应用之间的通讯,包括 Web 应用中的客户端和服务器之间,移动应用与后端服务之间,或两个后端服务之间。 10.1 使用 REST 服务在应用之间交换数据 REST端点是应用程序通过 Web 协议公开服务的方式,因此也称…

SYBASE ASE、Oracle、MySQL/MariaDB、SQL Server及PostgreSQL在邮件/短信发送功能上的全面横向对比报告

以下是对SYBASE ASE、Oracle、MySQL/MariaDB、SQL Server及PostgreSQL在邮件/短信发送功能上的全面横向对比报告(截至2025年8月最新版本),涵盖技术实现、配置复杂度、适用场景及权威评测:​​一、邮件发送能力对比​​​​1. Orac…

服务器与客户端

目录 一、服务器(Server) 核心特点 常见类型 二、客户端(Client) 核心特点 常见类型 客户端与服务器的交互流程 补充:与 “对等网络(P2P)” 的区别 C/S模式 一、C/S 模式的核心原理 …

GaussDB 并发自治事务数达到最大值处理案例

1 业务背景自治事务(Autonomous Transactions)是一种高级特性,允许你在一个事务中执行另一个独立的事务。这种机制特别有用,尤其是在需要在一个事务中执行多个操作但又不想因为其中一个操作失败而影响整个事务的场景。2 业务影响在…

【传奇开心果系列】Flet分页自定义组件CustomPaginationComponent封装版自定义模板

Flet分页自定义组件CustomPaginationComponent封装版自定义模板一、效果展示GIF动图二、应用场景三、特色说明四、源码下载地址一、效果展示GIF动图 二、应用场景 图片浏览应用: 用户可以通过分页组件浏览多张图片,每点击一次“上一页”或“下一页”按钮…

数据安全——39页解读数字化转型大数据安全基础培训方案【附全文阅读】

适应人群为企业数据安全管理人员、IT 运维人员、数字化转型决策者、网络安全工程师及关注大数据安全的从业人员。主要内容围绕数字化转型中大数据安全展开,核心包括基础概念(信息、数据与大数据的定义及区别,大数据 4V 特点与来源);安全风险(企业面临的数据资产管理缺失、…

week3-[二维数组]小方块

week3-[二维数组]小方块 题目描述 如果四个数 a,b,c,da,b,c,da,b,c,d 可以分成两组,每组两个数,满足每组里面的两个数一样,那么称这四个数是好的。 比如,2,5,2,52,5,2,52,5,2,5 是好的,因它满足两组:222 与…

Swift 项目结构详解:构建可维护的大型应用

Swift 项目结构详解:构建可维护的大型应用一、基础结构(推荐新手使用)二、组件化结构(企业级应用推荐)层级架构:MVVM Coordinator路由实现(Coordinator模式)三、通用组件实现DI&…

【实时Linux实战系列】基于实时Linux的数字转换器设计

在现代电子系统中,数字转换器(如模数转换器ADC和数模转换器DAC)扮演着至关重要的角色。它们负责将模拟信号转换为数字信号,或将数字信号转换为模拟信号,从而实现信号的数字化处理和传输。在实时系统中,如工…

FastTracker:实时准确的视觉跟踪

摘要 https://arxiv.org/pdf/2508.14370 传统的多目标跟踪(MOT)系统主要设计用于行人跟踪,通常对其他物体类别的泛化能力有限。本文提出了一种能够处理多种物体类型的通用跟踪框架,特别强调在复杂交通场景中的车辆跟踪。所提出的1方法包含两个关键组件&a…

国产轻量级桌面GIS软件Snaplayers从入门到精通(20)

国产轻量级桌面GIS软件Snaplayers实操:打开图层并显示属性信息1、根据数据格式选择图层文件2、加载图层到地图中,并在左侧显示图层的属性表格3、属性表格分页显示Snaplayers研发团队承诺:国产轻量级桌面GIS软件Snaplayers永久免费并持续更新

快速入门flask应用(从入门到实战)

目录 前言: 了解一些网络通信的概念 什么是网络通信: 当我们访问一个网址的时候发生了什么: 1. 解析 URL:明确访问目标 2. DNS 域名解析:将 “名字” 转为 “地址” 3. 建立连接:TCP 三次握手&#x…

C++/QT 开发技能树详解

一、 编程语言 (C)1. C基础语法(数据类型、模板、命名空间)是什么: 这是构建C程序的基石。数据类型定义了变量存储的数据种类和大小;模板允许编写与数据类型无关的通用代码;命名空间用于避免大型项目中的名称冲突。如何…

Java多线程进阶-死锁与面试题解析

文章目录Java多线程进阶:死锁与面试题解析一、并发编程的噩梦——死锁1. 什么是死锁?四个缺一不可的条件2. 如何避免死锁?从破坏循环等待开始二、并发编程面试题全景解析1. 锁与同步机制2. CAS 与原子操作3. JUC 工具与线程池4. 线程安全集合…

ZYNQ启动流程——ZYNQ学习笔记11

ZYNQ SoC 的启动由片上的 BootROM 开始。片上 BootROM 是 ZYNQ 芯片上的一块非易失性存储器,它包含了 ZYNQ 所支持的配置器件的驱动, 而且里面的代码是不可修改的。 BootROM 中的代码首先会在片外的非易失性存储器中寻找一个头文件, 头文件里…

C++利用CerateProcess创建WPF进程并通过命名管道通讯

引言原因是我需要在C程序中调用另外一个WPF窗体打开或则关闭,进程之前通过通讯协议进行交互。由于使用不同语言开发,两者都比较复杂不方便重写,最方便的方法就是使用进程间通信,WPF窗体应用程序根据消息进行Show/Hide/Exit操作。函…

Seaborn数据可视化实战

1. Seaborn基础与实践:数据可视化的艺术 2. Seaborn入门:环境搭建与基础操作 3. Seaborn基础图表绘制入门 4. Seaborn数据可视化基础:从内置数据集到外部数据集的应用 5. Seaborn颜色与样式定制教程 6. Seaborn数据可视化入门:绘制…