首页 / Redis 入门教程 / Redis 简介与核心特性

Redis 入门教程

Redis 简介与核心特性

本教程共 40 篇 · 第 1 篇 · 更新于 2026-08-02

redis入门nosql内存数据库

1. Redis 简介与核心特性

本节目标

  • 理解 Redis 是什么,以及它「内存数据结构服务器」的定位
  • 掌握 Redis 的 6 大核心特性(高性能、丰富数据结构、原子性、持久化、高可用、扩展能力)
  • 能列举 Redis 最常见的 6 类应用场景
  • 说清楚 Redis 与 Memcached、关系型数据库的本质区别
  • 用 redis-cli 跑通第一个 PING / SET / GET 示例

1-1 Redis 是什么

Redis 是 REmote DIctionary Server(远程字典服务器)的缩写,由意大利开发者 Salvatore Sanfilippo(网名 antirez)于 2009 年发布。它是一个开源的、基于内存的键值(key-value)数据库,但和人们印象里「只能存字符串」的简单缓存不同,Redis 更准确地定位是一个「数据结构服务器(data structure server)」。

从 Redis 8.0 起,原先的「Redis Community Edition(社区版)」正式更名为 Redis Open Source(开源版);同时,过去需要单独安装扩展包(Redis Stack)才能用上的 JSON、时间序列、概率类型(Bloom、Cuckoo、Top-K、T-Digest 等)、向量集与查询引擎,在 Redis 8 中已经内置到发行版里。换句话说,现在下载一个 Redis 8.x,你就已经拥有了过去「Redis Stack」的全部能力。

提示:版本基线说明。本教程以 Redis 8.x 最新稳定版 为准(GitHub 上的最新发布标签为 8.10.0)。需要留意的是,redis.io 官方下载页仍把 8.8 标注为 “Latest stable”,二者同属 8.x 大版本,命令与数据类型层面差异极小,本教程统一按 8.10.0 行文。后续遇到 7.x → 8.x 的重要变化或 8.x 新特性,都会用「提示」块特别标注。

Redis 把数据主要放在内存中,因此读写延迟通常可以做到亚毫秒级(sub-millisecond);同时它又通过持久化机制把内存数据落盘,从而兼得「快」与「不丢数据」。

1-2 用 redis-cli 打个招呼

安装好 Redis 后(安装方法见下一章),启动服务并在另一个终端执行 redis-cli,就能用最简单的命令验证它是否工作:

redis-cli
127.0.0.1:6379> PING
PONG
127.0.0.1:6379> SET greeting "hello redis"
OK
127.0.0.1:6379> GET greeting
"hello redis"
127.0.0.1:6379> INCR counter
(integer) 1
127.0.0.1:6379> INCR counter
(integer) 2

上面这段示例已经体现了 Redis 的几个关键特征:PING 返回 PONG 表示服务存活;SET/GET 操作字符串;INCR 把一个「看起来是数字」的字符串原子地加一。这种「命令进、结果出」的交互,是学习 Redis 的基本方式。

1-3 六大核心特性

(1)性能极高

Redis 将数据存放在内存里,并使用经过高度优化的 C 语言数据结构,单机即可轻松支撑每秒十万级甚至百万级的读写操作(具体数字取决于实例规格、命令类型与网络)。官方给出的经验区间是:读约 10 万+ 次/秒、写约 8 万+ 次/秒的量级。由于访问路径短、没有磁盘寻道开销,它在缓存、会话、排行榜等「要快」的场景里几乎是默认选择。

(2)丰富的数据结构

这是 Redis 区别于普通 key-value 存储最关键的卖点。它不只能存「一个字符串」,还内建了:

  • String(字符串):文本、数字、序列化对象、二进制流
  • Hash(哈希):字段-值映射,适合存对象
  • List(列表):按插入顺序排序的字符串序列,可做队列/栈
  • Set(集合):无序、唯一的字符串集合,支持交并差运算
  • Sorted Set(有序集合):带 score 的唯一集合,天然适合排行榜
  • Bitmaps / Bitfields:在字符串上的位操作
  • HyperLogLog:基数估算
  • Geospatial:地理空间索引
  • Stream:追加式日志,支持消费组
  • JSON / 向量集 / 概率类型(Bloom、Cuckoo、Top-K、T-Digest、Count-Min Sketch)/ 时间序列:Redis 8.x 已内置

这些结构让「缓存」「队列」「计数器」「排行榜」「去重」「附近的人」等需求都能用原生命令直接实现,而不必在应用层拼装。

(3)原子性操作

Redis 是单线程处理命令的(指「执行命令」这一核心路径;持久化、异步删除、网络 IO 等由额外线程承担)。单线程模型带来一个巨大好处:每条命令天然原子执行,不会出现两个客户端同时修改同一个 key 而互相打断的情况。像 INCRHINCRBYLPUSH 这类「读-改-写」操作,在并发下也是安全的。需要把多条命令打包成「要么全做、要么不做」的事务时,还可以用 MULTI/EXEC(后续章节讲解)。

(4)持久化

内存快,但断电会丢。Redis 提供两种互补的持久化方案:

  • RDB:在指定时间点对内存做快照(snapshot),文件紧凑、恢复快。
  • AOF:把每一条写命令以日志形式追加保存,数据安全性更高,可配置每秒或每次落盘。

两者可以同时开启,Redis 重启时优先用 AOF 恢复以保证数据更完整。生产环境几乎总是开启至少一种持久化。

(5)高可用与可扩展

Redis 内建:

  • 主从复制(Replication):从节点复制主节点数据,用于备份和分摊读压力。
  • 哨兵(Sentinel):自动监控并在主节点宕机时完成故障转移。
  • 集群(Cluster):数据分片到 16384 个槽(slot),支持水平扩展。

这使得 Redis 既能当缓存,也能当「需要高可用」的主存储组件。

(6)扩展能力

除了丰富内建类型,Redis 还通过 Modules API 允许社区和官方扩展新命令、新数据类型。Redis 8 把过去流行的扩展(JSON、搜索与查询、概率结构、向量集)直接做成内置模块,开发者无需额外安装即可使用。

1-4 典型应用场景

场景用到的能力说明
缓存(Cache)String + 过期时间把数据库热点数据放内存,降低后端压力
分布式会话(Session)String / Hash / JSON多实例共享登录状态
排行榜Sorted SetZADD/ZRANGE 实时排名
计数器 / 限流String INCR、Hash HINCRBY文章阅读量、接口限流
消息队列List(LPUSH/BRPOP)、Stream异步任务、事件流
实时分析HyperLogLog、概率类型UV 统计、Top-K 热词
地理附近的人Geospatial半径查询
向量检索 / AI 记忆向量集语义搜索、RAG、LLM 缓存

1-5 Redis 与「其他存储」的区别

Redis vs Memcached

两者都是内存键值缓存,但 Redis 数据类型更丰富(Memcached 只有简单的 key-value),并且 Redis 支持持久化、复制、Lua 脚本、事务、发布订阅等,能力边界远超缓存。Memcached 在「超简单纯缓存」场景里依然轻量好用,但 Redis 几乎总能覆盖它。

Redis vs 关系型数据库(MySQL 等)

关系型数据库把数据放在磁盘、支持 SQL、强一致、适合复杂联表查询与事务;Redis 把数据放内存、没有 SQL、以命令方式访问、单条命令原子、适合低延迟高并发的访问模式。二者通常是互补关系:MySQL 做源数据与主存储,Redis 做前置缓存或特定结构(排行榜、队列)的加速层。

Redis vs 其他 NoSQL(如 MongoDB)

MongoDB 是面向文档的磁盘型数据库,擅长存复杂文档、做聚合分析;Redis 是内存型、以数据结构为中心,胜在速度与原子操作。选谁取决于「要持久文档 + 复杂查询」还是「要极速访问 + 特定结构」。

1-6 常见误区

  • 误区一:Redis 只能做缓存。 错。它可做主存储、消息队列、排行榜、会话、限流、向量检索等,缓存只是最经典的一种用法。
  • 误区二:内存数据库一断电全丢。 错。RDB/AOF 持久化可以把数据落盘,重启后恢复。
  • 误区三:单线程 = 性能差。 错。正是因为单线程避免了锁竞争与上下文切换,配合内存访问,Redis 反而极快;瓶颈通常在网络或内存容量,而非 CPU 核数。
  • 误区四:value 最大 512MB 所以很够用。 这没错,但要警惕「大 key」——一个几十 MB 的 String/Hash/List 会拖慢删除与迁移,生产环境应避免。

1-7 小结

Redis 是一个以内存为主、以数据结构为核心的「瑞士军刀式」数据库:它既快(亚毫秒延迟)、又安全(原子 + 持久化 + 高可用)、还灵活(十多种数据类型 + 可扩展)。理解了它的定位与特性,你就掌握了后续所有章节的「为什么」。

提示:版本基线说明。本教程正文统一以 Redis 8.x(最新稳定版) 表述。需要留意:官方 redis.io 下载页目前把 8.8 标注为 “Latest stable”,而 GitHub 上 redis/redis 的最新发布标签为 8.10.0;二者同属 8.x 大版本,命令与数据类型差异极小,本教程以 8.10.0 为准。

下一章我们将在 Linux / macOS / Windows / Docker 上把 Redis 8.x 真正安装起来。

上一篇
已经是第一篇啦
下一篇
安装 Redis(多平台)