404 Not Found

404 Not Found


nginx

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的应用场景

互联网大厂都在用

典型应用场景

场景 使用的数据类型 说明
缓存系统 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或更高版本,性能更好,功能更完善。

本教程适合谁?

学习前提

本教程内容

本教程分为4个部分:

  1. Redis基础:安装、配置、基本操作
  2. 数据类型深入:字符串、哈希、列表、集合、有序集合
  3. 高级特性:事务、持久化、安全、性能优化
  4. 实战应用: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数据库,数据存在内存中,适合缓存和热点数据;传统数据库数据存在磁盘,适合持久化存储。两者通常配合使用。

📖 小节

📝 作业

  1. 思考题: 在你的项目中,哪些场景适合使用Redis?
  2. 调研题: 查看你常用的网站或App,猜测它们可能用Redis做什么?
  3. 对比题: Redis和Memcached各有什么优缺点?如何选择?

下一课

下一课我们将学习 Redis 安装,在Linux、Windows、Mac系统上安装Redis。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏