跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
编程语言java算法

Redis 核心概念与常用数据结构解析

Redis 作为高性能非关系型数据库,基于内存存储并提供多种数据结构。其核心特性包括单线程原子性、低延迟及持久化支持。主要数据类型涵盖 String、Hash、List、Set 及 SortedSet,分别对应基础存储、对象字段管理、队列场景、去重集合及排行榜需求。理解各结构的底层原理与适用场景,有助于在实际开发中做出合理选型。

JavaCoder发布于 2023/9/3更新于 2026/9/1069 浏览
Redis 核心概念与常用数据结构解析

认识 NoSQL

NoSQL(Not Only SQL)是相对于传统关系型数据库而言的一种特殊数据库,常被称为非关系型数据库。它打破了传统 SQL 的限制,提供了更灵活的数据存储方案。

Redis 简介

Redis 自 2009 年问世以来,全称 Remote Dictionary Server(远程词典服务器),是一个基于内存的键值型 NoSQL 数据库,以高性能著称。

核心特性

  • 键值结构:支持多种不同的 Value 数据结构,功能丰富。
  • 单线程模型:每个命令具备原子性,避免了多线程竞争开销。
  • 低延迟高速度:基于内存操作,配合 IO 多路复用机制,性能极佳。
  • 数据持久化:支持将内存数据保存到磁盘,防止数据丢失。
  • 集群支持:支持主从复制及分片集群,便于水平扩展。
  • 多语言客户端:提供丰富的语言绑定,方便集成。

Redis 数据结构详解

Redis 本质上是 Key-Value 数据库,Key 通常是字符串,但 Value 的类型多种多样,每种结构都有其特定的应用场景。

通用命令

部分指令适用于多种数据类型,常用的包括:

  • KEYS pattern:查看符合模板的所有 Key。
  • DEL key:删除指定的 Key。
  • EXISTS key:判断 Key 是否存在。
  • EXPIRE key seconds:为 Key 设置有效期,过期自动删除。
  • TTL key:查看 Key 的剩余生存时间。

可以通过 help [command] 查看具体命令用法,例如在终端输入 help keys 即可获取帮助信息。

String(字符串)

这是 Redis 最基础的存储类型。虽然 Value 表现为字符串,但根据格式不同可分为三类:普通字符串、整数(支持自增自减)、浮点数(支持自增自减)。底层均采用字节数组存储,只是编码方式不同。单个字符串最大空间限制为 512MB。

Hash(散列)

Hash 类型的 Value 是一个无序字典,类似 Java 中的 HashMap。相比将对象序列化为 JSON 存储,Hash 允许直接操作对象的某个字段,无需反序列化整个对象,非常适合存储对象属性。

List(列表)

Redis 的 List 类似于 Java 的 LinkedList,底层是双向链表。

  • 有序:元素有顺序之分。
  • 可重复:允许相同元素存在。
  • 高效插入删除:两端操作非常快。
  • 查询一般:中间位置查询效率不如随机访问。 常用于存储评论列表、朋友圈点赞记录等有序数据。

Set(集合)

Set 结构与 Java 的 HashSet 类似,底层是 Hash 表。

  • 无序:不保证元素顺序。
  • 不可重复:自动去重。
  • 查找快:基于 Hash 索引。
  • 集合运算:支持交集、并集、差集等操作。

SortedSet(有序集合)

SortedSet 是可排序的集合,类似 Java 的 TreeSet,但底层实现更为复杂,采用跳表(SkipList)加 Hash 表。每个元素关联一个 score 属性,系统根据 score 对元素进行排序。

  • 可排序:核心优势。
  • 不可重复:元素唯一。
  • 查询快:基于分数范围查询效率高。 由于具备排序能力,常被用于实现排行榜功能。

目录

  1. 认识 NoSQL
  2. Redis 简介
  3. 核心特性
  4. Redis 数据结构详解
  5. 通用命令
  6. String(字符串)
  7. Hash(散列)
  8. List(列表)
  9. Set(集合)
  10. SortedSet(有序集合)

更多推荐文章

查看全部
  • 三种适用于 Web 版 IM 聊天信息的加密算法实现方案
  • OpenClaw 安装与飞书机器人配置全流程指南
  • MySQL 表操作及查询
  • 智能家居插件管理工具技术指南:本地化网络优化方案
  • Python 实现 MCP 客户端调用高德地图天气查询示例
  • 在 macOS 上给 Steam 游戏配置手柄
  • 无人机路径规划算法详解
  • 基于 AI 的鸿蒙游戏 NPC 开发体验与实现
  • 给年轻人的建议:专注搞钱不如专注提升核心竞争力
  • OpenClaw Secure DM Pairing:为 AI 机器人构建安全私信访问机制
  • Java 堆外内存释放核心技术:从 Unsafe 到 ByteBuffer 的完整回收链解析
  • Prompt 工程:大语言模型高效使用指南
  • 算法实战:寻找数组中心下标与除自身外数组乘积(前缀和技巧)
  • ToDesk、顺网云与海马云运行 DeepSeek 模型性能实测
  • AI 数据标注平台的选型与实践:效率提升背后的技术逻辑
  • Luminar-Layui 可视化表单设计器:企业级解决方案
  • 栈的压入弹出序列判断算法详解
  • OpenClaw 系列 AI Agent 选型指南与对比分析
  • C++ NX 二次开发环境配置指南
  • OpenClaw AI Agent 框架入门与部署实践

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online