Redis 教程首页
Redis是一个开源的内存键值对存储系统,可以用作数据库、缓存和消息中间件。它支持多种数据结构,性能极高,是现代Web应用中不可或缺的组件。
什么是Redis?
Redis的全称是 REmote DIctionary Server(远程字典服务器),由Salvatore Sanfilippo于2009年开发。它将数据存储在内存中,因此读写速度极快,每秒可以处理超过10万次操作。
Redis的核心特点
| 特点 | 说明 |
|---|---|
| 内存存储 | 数据存储在内存中,读写速度极快 |
| 持久化 | 支持RDB快照和AOF日志两种持久化方式 |
| 丰富数据类型 | 支持字符串、哈希、列表、集合、有序集合等 |
| 原子操作 | 所有操作都是原子性的,支持事务 |
| 发布订阅 | 内置发布订阅消息系统 |
| 高性能 | 单机QPS可达10万+,支持主从复制和集群 |
💡 为什么叫Redis? Redis = REmote DIctionary Server,因为它本质上是一个远程访问的字典(键值对)服务。
Redis能做什么?
1. 缓存系统
这是Redis最常见的用途。将数据库查询结果、API响应、页面片段等存储在Redis中,大幅提升应用性能。
用户请求 → 查Redis缓存 → 命中则返回
↓ 未命中
查数据库 → 存入Redis → 返回
2. 会话存储
将用户登录状态、购物车、临时数据等存储在Redis中,支持分布式环境下的会话共享。
3. 消息队列
利用Redis的列表(List)和发布订阅(Pub/Sub)功能,实现轻量级消息队列。
4. 排行榜
利用有序集合(Sorted Set)的排序特性,实现游戏排行榜、热搜榜等。
5. 计数器
利用字符串的INCR命令,实现文章阅读数、点赞数、访问统计等。
6. 社交功能
利用集合(Set)的交集、并集运算,实现共同好友、可能认识的人等社交功能。
Redis与其他数据库对比
Redis vs Memcached
| 对比项 | Redis | Memcached |
|---|---|---|
| 数据类型 | 丰富(5种基本类型) | 仅字符串 |
| 持久化 | 支持 | 不支持 |
| 集群 | 原生支持 | 需要客户端分片 |
| 内存管理 | 更灵活 | 更简单 |
| 性能 | 极高 | 极高 |
⚠️ 如何选择? 如果只需要简单的键值缓存,Memcached足够;如果需要复杂数据结构、持久化、集群,选Redis。
Redis vs 关系型数据库(MySQL)
| 对比项 | Redis | MySQL |
|---|---|---|
| 存储位置 | 内存 | 磁盘 |
| 数据模型 | 键值对 | 关系表 |
| 查询能力 | 简单 | 强大(SQL) |
| 事务支持 | 简单事务 | 完整ACID |
| 性能 | 极高 | 较高 |
| 持久化 | 可选 | 默认持久化 |
💡 最佳实践: Redis + MySQL组合使用,Redis做缓存和热点数据存储,MySQL做持久化存储。
Redis vs MongoDB
| 对比项 | Redis | MongoDB |
|---|---|---|
| 数据模型 | 键值对 | 文档(JSON) |
| 查询语言 | 命令式 | 类SQL |
| 内存使用 | 全内存 | 内存+磁盘 |
| 适用场景 | 缓存、会话、队列 | 文档存储、内容管理 |
Redis的应用场景
互联网大厂都在用
- 微博:使用Redis存储用户关系、消息队列、热门话题
- 淘宝:使用Redis做商品缓存、购物车、秒杀系统
- 微信:使用Redis存储会话消息、朋友圈点赞
- GitHub:使用Redis做缓存、队列、计数器
典型应用场景
| 场景 | 使用的数据类型 | 说明 |
|---|---|---|
| 缓存系统 | String | 存储缓存数据,设置过期时间 |
| 会话存储 | String | 存储用户会话信息 |
| 购物车 | Hash | 存储商品ID和数量 |
| 消息队列 | List | LPUSH/RPOP实现队列 |
| 排行榜 | Sorted Set | 自动排序,实时更新 |
| 社交关系 | Set | 存储好友列表,计算交集 |
| 计数器 | String | INCR原子自增 |
| 限流 | String + 过期时间 | 记录访问次数 |
Redis的版本历史
| 版本 | 发布时间 | 重要特性 |
|---|---|---|
| 1.0 | 2009年 | 首次发布 |
| 2.0 | 2010年 | 虚拟内存、发布订阅 |
| 2.6 | 2012年 | Lua脚本、过期时间精度提升 |
| 2.8 | 2013年 | 部分同步、配置重写 |
| 3.0 | 2015年 | 官方集群支持 |
| 3.2 | 2016年 | GEO地理位置、位图优化 |
| 4.0 | 2017年 | 模块系统、混合持久化 |
| 5.0 | 2018年 | Streams数据类型 |
| 6.0 | 2020年 | ACL权限控制、多线程IO |
| 7.0 | 2022年 | Function、多部分AOF |
💡 推荐版本: 建议使用Redis 6.0或更高版本,性能更好,功能更完善。
本教程适合谁?
- 后端开发者:学习Redis提升应用性能
- 运维工程师:掌握Redis部署和优化
- 架构师:了解Redis在系统架构中的应用
- 学生:学习现代数据库技术
学习前提
- 了解基本的Linux命令
- 熟悉至少一门编程语言(Python/Java/Node.js等)
- 了解基本的数据库概念
本教程内容
本教程分为4个部分:
- Redis基础:安装、配置、基本操作
- 数据类型深入:字符串、哈希、列表、集合、有序集合
- 高级特性:事务、持久化、安全、性能优化
- 实战应用:Python、Java、Node.js使用Redis
❓ 常见问题
Q Redis数据存在内存中,断电会丢失吗?
A Redis支持持久化,可以将内存数据保存到磁盘。可以选择RDB快照或AOF日志两种方式,甚至可以同时使用。
Q Redis能存储多少数据?
A 取决于内存大小。Redis单个实例可以存储数GB数据,通过集群可以扩展到TB级别。
Q Redis是单线程的吗?
A Redis的核心命令执行是单线程的,但6.0版本引入了多线程IO,网络读写可以多线程处理。单线程设计避免了锁竞争,反而性能更高。
Q Redis和数据库有什么区别?
A Redis是NoSQL数据库,数据存在内存中,适合缓存和热点数据;传统数据库数据存在磁盘,适合持久化存储。两者通常配合使用。
📖 小节
- Redis是内存键值数据库,性能极高,支持丰富数据类型
- 常用于缓存、会话存储、消息队列、排行榜等场景
- 与Memcached相比,Redis支持更多数据类型和持久化
- 与MySQL相比,Redis更快但不适合复杂查询
- 推荐使用Redis 6.0或更高版本
📝 作业
- 思考题: 在你的项目中,哪些场景适合使用Redis?
- 调研题: 查看你常用的网站或App,猜测它们可能用Redis做什么?
- 对比题: Redis和Memcached各有什么优缺点?如何选择?
下一课
下一课我们将学习 Redis 安装,在Linux、Windows、Mac系统上安装Redis。



