826 字
4 分钟
Redis到底是什么?
2026-04-02

【问题】Redis到底是什么?#

为了建立一个对Redis深入的认识,我开始用GPT协助我开始拆解,引导我思考。在过去,我对Redis的认识是它是一个内存中的数据库,所以它快。Redis=缓存,Redis=内存数据库。这个理解不能说错,但非常不完整。 这个理解哪里不够呢?如果 Redis 只是内存数据库或缓存工具,那我们可以问一个关键问题:

  • 为什么不用 Java 的 HashMap 来做缓存?
  • 为什么不直接用 MySQL 加索引优化?

【核心认知】#

实际上Redis 并不只是“存数据的地方”,它真正厉害的地方在于它不仅存数据,还定义了“如何高效操作数据”。我们一步一步往下拆:
1️⃣ Redis 是内存系统(快的基础) Redis 把数据存储在:内存(RAM),这意味着:

  • 访问速度极快(纳秒级)
  • 远快于磁盘数据库(MySQL)

2️⃣ Redis 是 Key-Value 存储(简单模型)。 其最基础的能力就是SET key value、GET key 你可以把它理解为:一个可以远程访问的 HashMap。但如果只是这样,它还不够强。

3️⃣ Redis 是“数据结构服务器”(核心!) 这是最关键的一点👇 Redis 不只是存 value,而是支持多种数据结构 👉 这意味着:Redis不是“存数据”,而是“操作数据结构”。

举个例子(关键理解) 你要实现一个排行榜: ❌ 用 MySQL:建表、排序、查询、性能差 ✅ 用 Redis:ZADD leaderboard 100 user1 ZADD leaderboard 200 user2 ZREVRANGE leaderboard 0 10

直接完成排序 + 查询 👉 所以本质变了:Redis = 数据结构 + 操作能力
到这里,我们可以给出一个更“锋利”的定义:Redis 是一个基于内存的高性能数据结构服务器
或者更工程一点:Redis = 内存 + 单线程 + 数据结构操作引擎 + 网络服务

【最小实现(还原本质)】#

如果让你自己实现一个“最简版 Redis”,你只需要:

  1. 一个 HashMap(存数据)
  2. 一个 Socket 服务(接收请求) 支持:SET key value、GET key
    所以最小模型是:HashMap + 网络通信

【解决的问题】#

Redis 解决的核心问题不是“存储”,而是高并发场景下的数据访问性能问题
更具体一点:

  • 减少数据库压力
  • 提供低延迟访问
  • 支持高频读写

【为什么会有 Redis?】#

因为传统数据库(如 MySQL)存在:

  1. 磁盘IO慢
  2. 并发能力有限
  3. 不适合简单高频操作

Redis 的出现,本质是:把“频繁访问的数据”从磁盘搬到内存

【最大误区(非常重要)】#

很多人会说:Redis = 缓存 这是错误的认知。 正确理解是:Redis可以用来做缓存,但它本质不是缓存系统
👉 Redis 还可以做:分布式锁、消息队列(简单)、排行榜、计数器、限流器、Session 存储
👉 所以:缓存只是Redis的一种“使用方式”,不是它的本质

【总结一句话】#

Redis不是一个“缓存工具”,而是一个基于内存的高性能数据结构服务器,缓存只是它最常见的一种应用场景。

Redis到底是什么?
https://jiqingjiang.github.io/posts/tech/redis/第1篇redis到底是什么/
作者
erode
发布于
2026-04-02
许可协议
CC BY-NC-SA 4.0