Skip to content

01|认识 Redis:是什么、和 Valkey 的关系

Redis 是一个内存型的键值存储。数据放在内存里,不走磁盘,单次读写在微秒级,比磁盘数据库快三四个数量级。代价是容量受内存限制——一台机器能存几十 GB 就到头了,磁盘能存几 TB。所以 Redis 和 MySQL 不替代,是配合:MySQL 存全量数据,Redis 存热数据缓存。

存储方式很简单:一个 key 对应一个 value。SET user:1 "zhangsan" 存进去,GET user:1 取出来。值可以是简单文本,也可以是列表、哈希、集合等复杂结构。后面几篇会逐个展开。

维度RedisMySQL
存放位置内存磁盘
单次读写微秒级毫秒级
数据量受内存限制(GB 级)受磁盘限制(TB 级)
持久化可选(RDB/AOF)默认持久
典型用途缓存、计数、队列业务数据存储

一、为什么快

三个原因,理解这些有助于后面调优:

全内存——磁盘是最大的慢因素,Redis 跳过了它。内存读写比磁盘快几个数量级,这是速度的根本来源。

单线程处理命令——Redis 核心的命令处理是单线程的,不用锁、不用线程切换。听起来单线程慢,但单线程跑内存操作比多线程跑磁盘快得多。多线程的优势在 CPU 密集场景,Redis 是 I/O 密集(内存 I/O),单线程足够。

I/O 多路复用——一个线程同时处理很多连接,靠操作系统提供的 epoll 机制,哪个连接有数据就处理哪个。不用为每个连接开一个线程,连接数成千上万也不会把系统拖垮。

后面性能调优篇会展开,这里先建立"内存 + 单线程 + 多路复用"这个基本认知。

二、Redis 和 Valkey 的关系

这是 2024 年后学 Redis 必须搞清的事。

2024 年 3 月之前:Redis 一直是开源的(BSD 许可证),社区和云厂商都基于它做产品。

2024 年 3 月:Redis 公司把 Redis 7.4 之后的许可证从 BSD 改成了 SSPL 和 RSALv2。这俩限制了云厂商把 Redis 当托管服务对外提供。AWS、Google 这些云厂商没法继续用了。

几天后:社区从 Redis 7.2.4 fork 出 Valkey,交给 Linux Foundation 维护,继续走 BSD 开源。Valkey 起源就是 Redis 7.2.4,命令、协议、数据格式都和 Redis 7.2 一样。

分叉之后两家各自发展:

  • Redis:Redis 8(2025.5)改用三许可(含 AGPLv3),加了很多新特性(JSON、向量搜索等),品牌还是 Redis
  • Valkey:8.x/9.x,BSD 开源,加多线程 I/O、大规模集群支持,云厂商(AWS ElastiCache 等)大量转向 Valkey

实际影响:

方面说明
命令和协议两家基本通用,都是 RESP 协议。客户端代码大多不用改
数据文件Redis 7.4+ 的 RDB 和 Valkey 不兼容。Redis 7.2 的 RDB 两边都能读
选哪个新项目和云环境多选 Valkey(开源、云厂商支持);存量项目多还在 Redis
教程本系列命令以 RESP 协议为准,两家通用

"用 Redis 还是 Valkey"在命令层面不重要,学一套两边都能用。涉及高级特性(8.x 的新数据结构)才开始分叉,本系列主线讲 7.2/7.4 共通的部分。

三、Redis 用在哪些场景

理解这些场景,后面学数据类型时知道每种结构为什么这么设计:

缓存——最常见。数据库查询结果放 Redis,应用先查 Redis 命中就不用查数据库。string 类型就够用。

计数器——文章阅读量、API 调用次数。Redis 的 INCR 原子自增,string 类型。

排行榜——游戏积分排行、热帖排序。用 zset(有序集合),按分数排序天然支持。

消息队列——异步任务、解耦。list 或 stream,生产者推、消费者拉。

会话存储——用户登录态。分布式 session 放 Redis,多台应用共享。

限流——接口防刷。计数器加过期时间实现。

四、一个必须知道的坑:公网暴露

Redis 默认监听 127.0.0.1,只接受本机连接。但有人为了方便改成 bind 0.0.0.0 或者安全组放得太宽,把 6379 端口暴露到了公网——这是一个已经反复发生过的攻击路径。

攻击者连上无密码的 Redis 后,利用 CONFIG SET dirCONFIG SET dbfilename 把 RDB 文件写到 /root/.ssh/authorized_keys,写入自己的 SSH 公钥,然后直接 SSH 登录服务器。Redis 本身没有文件系统沙箱,写目录和写文件名都能通过命令改。

防护措施在 安全配置 里讲,但核心原则在这里先建立:

  • 生产环境 Redis 绝不监听 0.0.0.0
  • bind 只绑内网地址
  • 必须设密码或 ACL
  • 前面有防火墙或安全组严格限制来源

五、本系列的内容路线

后面 11 篇依次讲:安装连接(02)、数据类型(03、04)、过期和内存(05)、持久化(06)、性能(07)、主从和哨兵(08、09)、Cluster(10)、安全(11)、监控运维(12)。

学完能独立操作和运维一套 Redis——从单机缓存到集群高可用,从日常监控到故障排查。