[toc]
| 单词 | 词性 | 音标 | 含义 |
|---|---|---|---|
| open source | n. | /ˌəʊpən ˈsɔːs/ | 开源的(Redis 基于 BSD 协议开源,源代码公开可查看修改) |
| in-memory | adj. | /ˌɪn ˈmeməri/ | 内存中的(数据存内存,读写远快于磁盘数据库) |
| data structure | n. | /ˈdeɪtə ˈstrʌktʃə(r)/ | 数据结构(string、hash、list、set、zset 等) |
| store | v. | /stɔː(r)/ | 存储(Redis 可作数据库、缓存、消息中间件) |
| cache | n. | /kæʃ/ | 缓存(临时存储高频访问数据,减少对后端数据库的压力) |
| message broker | n. | /ˈmesɪdʒ ˈbrəʊkə(r)/ | 消息代理(转发消息的中间件,Redis 可充当简单消息代理) |
| compile | v. | /kəmˈpaɪl/ | 编译(把源码翻译成机器可执行程序的过程) |
| daemon | n. | /ˈdiːmən/ | 守护进程(后台运行的服务进程) |
| protected | adj. | /prəˈtektɪd/ | 受保护的(Redis 的保护模式配置,默认仅允许本地连接) |
Lecture01-Redis-简介与安装
1、Redis 简介
1、Redis 是什么
Redis(REmote DIctionary Server,远程字典服务)是一个开源(BSD 许可)、基于内存的数据结构存储系统,常被用作数据库、缓存、消息中间件。
官方一句话描述:
Redis is an open source, in-memory data structure store, used as a database, cache and message broker. It supports strings, hashes, lists, sets, sorted sets, bitmaps, hyperloglogs, geospatial indexes and streams.
- 内存存储:数据存在内存,读写极快(官方参考:GET 约 11 万次/秒,SET 约 8 万次/秒)。
- 键值结构:
key-value,value 支持多种数据结构。 - 开发语言:ANSI C,轻量、跨平台。
- 远程访问:默认监听 6379 端口,支持各种语言客户端。
2、NoSQL 三剑客
在整个 NoSQL 技术栈中,MemCache、Redis、MongoDB 被称为 NoSQL 三剑客。Redis 是传统关系型数据库的补充,而不是替代。
| 对比项 | 关系型数据库(MySQL) | NoSQL(Redis) |
|---|---|---|
| 数据存储位置 | 硬盘 | 内存 |
| 数据结构 | 高度组织化、结构化 | 键值对 + 多种数据结构,无预定义模式 |
| 操作方式 | SQL | 命令(无声明式查询语言) |
| 事务 | 严格 ACID | 松散事务控制(不保证回滚) |
| 索引/外键 | 支持 | 不支持(靠 Key 定位) |
| 核心优势 | 数据一致性强 | 高性能、高可用、可伸缩 |
3、Redis 的典型应用场景
①缓存(最常见)
查询请求先在 Redis 找数据,命中直接返回,大大减轻关系型数据库压力。
②数据临时存储
登录 Token、短信验证码、验证码过期时间——这类数据天然适合放 Redis。
③分布式 Session 存储
配合 SpringSession 解决多台服务器 Session 不一致问题。
④排行榜 / 计数器 / 去重
ZSet 做排行榜,INCR 做计数器,Set 做流式数据去重。
⑤消息暂存 / 异步队列
List 的 LPUSH/BRPOP 实现简单异步队列。
4、Redis 不适用场景
- 直接按 value 查询:必须通过 key 定位,没有按 value 条件查询的能力。
- 多键一值表达关系:一个 key 对应一个 value。
- 事务回滚:Redis 不支持回滚,运行期报错不撤销已执行命令。
2、安装 Redis 8(Ubuntu 22.04)
1、版本问题
Ubuntu 22.04(jammy)自带 apt 源里的 Redis 是 6.x,不符合我们的版本基准。要使用 Redis 8,最可靠的方式是源码编译安装(同时也让我们能控制安装目录、理解文件构成)。
备选方案:使用 Redis 官方 apt 仓库(
https://packages.redis.io/)安装最新版,命令更简单,但不便于演示"目录结构 + 多实例"。本课程以源码编译为主。
2、安装编译工具链
sudo apt update
sudo apt install -y build-essential tcl pkg-config
build-essential:提供 gcc、make 等编译工具。tcl:Redis 源码自带的测试套件需要。pkg-config:编译时查找依赖库。
提示:如果后面配置 systemd 服务,还需要
sudo apt install -y systemd-dev(第 12 讲用到)。
3、下载并解压源码
到官网 https://redis.io/download 查看最新 8.x 版本号,然后下载:
# 进入工作目录
cd /opt
# 下载 Redis 8 源码包(版本号以实际为准,这里用 8.0.x 示意)
sudo wget https://download.redis.io/releases/redis-8.0.6.tar.gz
# 解压
sudo tar -zxvf redis-8.0.6.tar.gz
解压后得到目录 /opt/redis-8.0.6。
4、编译安装
cd /opt/redis-8.0.6
# 编译
sudo make
# 安装到系统目录
sudo make install
make install 默认把可执行文件复制到 /usr/local/bin:
| 可执行文件 | 作用 |
|---|---|
redis-server | Redis 服务器(服务端) |
redis-cli | Redis 命令行客户端 |
redis-sentinel | 哨兵(高可用监控,与 redis-server 同源) |
redis-check-aof | AOF 文件修复工具 |
redis-check-rdb | RDB 文件修复工具 |
redis-benchmark | 性能测试工具 |
验证安装成功:
redis-server --version
# Redis server v=8.0.6 sha=...:0 malloc=jemalloc-5.3.0 bits=64
5、准备配置目录与配置文件
# 建立专属目录(存放配置文件、日志、数据)
sudo mkdir -p /usr/local/redis
# 把源码里的官方示例配置复制一份作为"正式使用"的配置
sudo cp /opt/redis-8.0.6/redis.conf /usr/local/redis/redis.conf
# 修改属主便于操作
sudo chown -R $USER:$USER /usr/local/redis
规范:保留
/opt/redis-8.0.6/redis.conf作为纯净备份,/usr/local/redis/redis.conf作为正式使用的配置。
3、启动 Redis
1、前台启动(先看一眼)
redis-server /usr/local/redis/redis.conf
前台启动会占用命令行,日志打印到标准输出,适合第一次验证。Ctrl+C 停止。
2、守护进程(后台)启动
修改配置文件,让 Redis 后台运行并写日志:
# 编辑配置
vim /usr/local/redis/redis.conf
| 配置项 | 值 | 作用 |
|---|---|---|
| daemonize | yes | 以守护进程方式后台运行 |
| logfile | "redis.log" | 日志写到文件 |
| dir | /usr/local/redis | 工作目录(日志、RDB 存放处) |
# 后台启动
redis-server /usr/local/redis/redis.conf
# 查看进程
ps -ef | grep redis
# 查看端口
ss -tlnp | grep 6379
4、客户端连接
1、启动客户端
redis-cli
# 127.0.0.1:6379>
2、测试连通
127.0.0.1:6379> ping
PONG
3、读写一个键值对
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"
4、退出客户端
127.0.0.1:6379> exit
# 或
127.0.0.1:6379> quit
5、关闭服务器
# 在客户端内
127.0.0.1:6379> shutdown
或者用 redis-cli 直接执行:
redis-cli shutdown
正常 shutdown 会先执行一次持久化再退出(第 9 讲细讲)。
5、常用命令速查
1、redis-server
| 用法 | 说明 |
|---|---|
redis-server <conf> | 按指定配置文件启动 |
redis-server --port 6380 | 指定端口启动(临时覆盖配置) |
redis-server --help | 查看帮助 |
2、redis-cli
| 用法 | 说明 |
|---|---|
redis-cli | 连接本机默认 6379 |
redis-cli -h 主机 -p 端口 | 指定主机与端口(重点记忆) -h 参数的默认值:127.0.0.1(本机) -p 参数的默认值:6379 都是默认值的时候,就可以不指定这两个参数 |
redis-cli -a 密码 | 带密码连接(Redis 8 会提示用 --no-auth-warning 去掉警告) |
redis-cli ping | 不登录,直接执行命令 |
redis-cli shutdown | 关闭服务器,本质上还是不登录直接执行命令(重点记忆) |
redis-cli -n 库号 | 连接时直接指定数据库 |
redis-cli --cluster create ... | 创建集群(第 11 讲) |
redis-cli -c -h 主机 -p 端口 | 集群模式连接(自动重定向) |
6、课堂练习
- 用
redis-cli连接本机 Redis,执行ping、set name <你的名字>、get name。 - 用
redis-cli -h 127.0.0.1 -p 6379显式连接并执行dbsize。 - 查看 Redis 进程与 6379 端口,用
redis-cli shutdown关掉后重启。 - (挑战)用
redis-benchmark -n 100000 -c 50 -t set,get测一下本机 Redis 的读写性能。
7、本讲小结
- Redis 是内存版键值数据库,定位是数据库/缓存/消息中间件的补充。
- Ubuntu 22.04 上装 Redis 8 走源码编译(apt 源只有 6.x)。
- 记住三个命令:
redis-server <conf>、redis-cli、redis-cli shutdown。 - 配置文件
/usr/local/redis/redis.conf是后续所有配置的基础。
8、本节验证
- 说出 Redis 的三重定位(数据库/缓存/消息中间件)与"基于内存、键值存储"的特点 ✅
- 知道 Ubuntu 22.04 用源码编译安装 Redis 8(apt 源只有 6.x)✅
- 会用 redis-server
启动、redis-cli 连接、redis-cli shutdown 关闭 ✅ - 记住配置文件 /usr/local/redis/redis.conf 是后续所有配置的基础 ✅
- 能配置 systemd 实现开机自启 ✅