
💡Yupureki:个人主页
✨个人专栏:《C++》 《算法》《Linux系统编程》《高并发内存池》《MySQL数据库》
《个人在线OJ平台》《Linux网络编程》《CMake自动化构建工具》《Redis数据库》
🌸Yupureki🌸的简介:

目录
[1. 初识Redis](#1. 初识Redis)
[1.1 什么是Redis](#1.1 什么是Redis)
[1.2 Redis VS MySQL](#1.2 Redis VS MySQL)
[1.3 Redis使用场景](#1.3 Redis使用场景)
[1.3.1 缓存(Cache)](#1.3.1 缓存(Cache))
[1.3.2 实时排行榜](#1.3.2 实时排行榜)
[1.3.3 分布式锁](#1.3.3 分布式锁)
[1.3.4 消息队列与异步任务](#1.3.4 消息队列与异步任务)
[2. Linux安装Redis](#2. Linux安装Redis)
[Ubuntu / Debian](#Ubuntu / Debian)
[RHEL / CentOS 7 / Fedora](#RHEL / CentOS 7 / Fedora)
[3. 打开Redis](#3. 打开Redis)
1. 初识Redis
1.1 什么是Redis
Redis (Remote Dictionary Server) 可以理解成一个超快、住在内存里的"数据结构百宝箱"。
-
数据在内存里 :读写速度极快(微秒级),但内存容量有限、断电会丢数据(不过它也有持久化机制来补救)。
-
支持丰富的数据结构:不仅是简单的"键-值",还能直接操作字符串、哈希、列表、集合、有序集合、流等。
-
常被用来:缓存、会话存储、排行榜、消息队列、实时计数器等。
Redis有多火?
假如现在有人问Redis的作者都有谁在使用Redis,我想他可以开句玩笑的回答:还有谁不使用
Redis? 当然这只是开玩笑,但是从Redis的官方公司统计来看,有很多重量级的公司都在使用
Redis,如国外的 Twitter、Instagram、Stack Overflow、Github等,国内就更多了,如果单单从体
量来统计,新浪微博可以说是全球最大的Redis使用者,除了新浪微博,还有像阿里巴巴、腾讯、搜狐、优酷土豆、美团、小米、唯品会等公司都是Redis的使用者。除此之外,许多开源技术像ELK等已经把Redis作为它们组件中的重要一环,而且Redis还提供了模块系统让第三方人员实现功能扩展,让Redis发挥出更大的威力。所以,可以这么说,熟练使用和运维Redis已经成为开发运维人员的一个必备技能。
1.2 Redis VS MySQL
已经有成熟的数据库-MySQL了,为什么还要学习Redis?
MySQL是一个十分稳定,安全的数据库,但问题是:不够方便,不够快
数据在磁盘上:持久化可靠,服务器重启数据还在,适合保存核心业务数据。但存储在磁盘上导致IO开销过大,如果频繁访问数据会十分缓慢
数据模型是"表格":数据库 → 表 → 一行行的记录,每行有固定的列(字段),非常规整。但很多数据不需要过于规范的表述,强行添加约束只会徒增管理成本
Redis 和 MySQL 的核心区别
| 对比维度 | Redis | MySQL |
|---|---|---|
| 数据库类型 | 键值存储 / 数据结构服务器(非关系型) | 关系型数据库(RDBMS) |
| 存储位置 | 主要在内存,也可持久化到磁盘 | 主要存储在磁盘,也有内存缓存区 |
| 速度 | 极快(微秒级读写) | 相对慢(毫秒级,受磁盘 I/O 影响) |
| 数据模型 | 键值对,值可以是字符串、列表、集合等 | 严格的表、行、列结构 |
| 查询语言 | 简单的命令,如 SET key value, GET key |
标准 SQL,如 SELECT ... WHERE ... JOIN |
| 持久化 | 可选(RDB 快照、AOF 日志),有时会牺牲少量数据 | 默认强持久化,保证数据不丢 |
| 事务 | 支持简单事务(MULTI/EXEC),弱 ACID | 完整的事务支持(ACID),可回滚 |
| 扩展性 | 易于水平扩展(集群、分片) | 可主从复制、分库分表,但复杂一些 |
| 典型场景 | 缓存、会话、排行榜、发布订阅、计数器 | 业务系统的主数据库(订单、用户、账务) |
学习Redis,不是因为 MySQL 不够,而是为了让整个系统扛得住流量、做得快功能、稳得住架构。它们合作时,MySQL 是"最后的真相源",Redis 是"性能的加速器",两个都懂才能写出真正落地的优秀系统。
绝大多数应用会同时用到它们:
用户请求
↓
应用服务器
↓
1. 先查 Redis(缓存) → 有就直接返回,超快
↓ (无)
2. 再查 MySQL(主数据库) → 把结果写入 Redis 并返回
1.3 Redis使用场景
1.3.1 缓存(Cache)
最经典用途,加速读、保护数据库。
-
模式:Cache-Aside(旁路缓存),读先查 Redis,未命中则查 DB 并回写;写时更新 DB 后失效缓存。
-
技巧:设置过期时间 + 内存淘汰策略,预防雪崩(过期时间加随机)、击穿(互斥锁/逻辑过期)、穿透(布隆过滤器/空值缓存)。
1.3.2 实时排行榜
利用 Sorted Set,成员为 ID,分数为积分/时间。命令:
-
ZADD更新分数 -
ZREVRANGE/ZRANGE取 Top N -
ZSCORE查个人排名适用:游戏排行、销量热榜、文章热度榜。
1.3.3 分布式锁
用 SET key value NX PX timeout 实现互斥。注意锁续期(Redisson 的 Watch Dog)和误删问题(value 用唯一标识,释放时 Lua 判断),高要求场景可考虑 Redlock 算法。
1.3.4 消息队列与异步任务
-
List :
LPUSH+BRPOP实现简单的生产者-消费者阻塞队列。 -
Streams(Redis 5.0+):支持消费者组、ACK、消息回溯,可靠性和功能更强,可替代轻量级 MQ。
-
Pub/Sub:即时广播,适合实时通知、聊天室,但不持久化,断线消息会丢。
2. Linux安装Redis
我们直接使用包管理器进行安装,这是最简单,最快的方法
Ubuntu / Debian
bash
# 1. 更新索引
sudo apt update
# 2. 安装 redis-server(一般会附带 redis-cli)
sudo apt install -y redis-server
# 3. 启动并设置开机自启
sudo systemctl enable redis-server
sudo systemctl start redis-server
# 4. 检查状态
sudo systemctl status redis-server
RHEL / CentOS 7 / Fedora
bash
# 1. 安装 EPEL 仓库(CentOS 7 需要)
sudo yum install -y epel-release
# 2. 安装 Redis
sudo yum install -y redis
# 3. 启动与自启
sudo systemctl enable redis
sudo systemctl start redis
# 4. 查看状态
sudo systemctl status redis
验证连接
直接运行 redis-cli ping,返回 PONG 即表示正常。
3. 打开Redis
Redis和MySQL一样,其核心是网络服务器,因此我们需要打开Redis的客户端,用客户端访问服务器
bash
redis-cli

当你看见127.0.0.1:6379时,就意味着成功进入了Redis的客户端