本文是一篇从零开始、可落地实操的 Redis 入门指南,涵盖:
-
Redis 是什么 & 核心特性
-
Redis 的安装方式(Linux / macOS / Docker)
-
Redis 安装后的验证方法
-
Redis 基础数据结构与常用命令
-
Redis 服务管理与常见问题排查
适合 后端开发 / 平台开发 / 运维 / 初学者 快速建立 Redis 使用能力。
一、Redis 是什么?(从使用场景理解)
在后端系统中,Redis 往往不是"主角",但几乎每一个高并发系统都离不开它。
如果用一句话概括:
Redis 是一个以"速度"为第一目标的内存型数据结构服务器。
它最常被用来解决三类问题:
-
快:数据库扛不住的读写压力
-
共享:多进程 / 多服务之间的状态同步
-
控制:限流、分布式锁、队列、排行榜
理解 Redis,关键不在"命令背得多熟",而在于它解决了什么问题,以及为什么用它而不是别的方案。
Redis(Remote Dictionary Server) 是一个 基于内存的 Key-Value 数据库,常用于:
-
缓存(最常见)
-
分布式锁
-
消息队列(List / Stream)
-
排行榜、计数器
-
会话存储
Redis 的核心特性(基础概念)
在真正使用 Redis 之前,有几个非常重要的基础概念必须先建立:
1️⃣ 基于内存(In-Memory)
Redis 的数据主要存放在 内存 中,这直接带来两个结果:
-
✅ 读写速度极快(微秒级)
-
⚠️ 内存是有限资源,必须考虑淘汰与持久化
这也是为什么 Redis 天生适合做缓存,而不适合作为唯一存储。
2️⃣ Key--Value + 数据结构
Redis 不是简单的 KV,而是:
Key -- Data Structure
也就是说:
-
Key 是字符串
-
Value 可以是:String / List / Hash / Set / ZSet / Stream
这一点决定了:
-
Redis 很多"高级功能"并不需要额外组件
-
例如:排行榜、队列、计数器,都是数据结构天然支持的
3️⃣ 单线程模型(这是重点)
Redis 的命令执行是单线程的(不考虑 IO 线程)。
这并不意味着它慢,恰恰相反:
-
避免了锁竞争
-
避免了上下文切换
-
保证命令原子性
Redis 的高性能,来自:
单线程 + 非阻塞 IO + 高效的数据结构
4️⃣ 过期机制(TTL)
Redis 中的 Key 可以设置过期时间:
Key + TTL
-
到期后自动删除
-
是缓存设计的核心能力
5️⃣ 持久化不是"默认保障"
Redis 支持持久化,但需要明确:
-
Redis 的第一职责是 性能
-
数据安全依赖于你如何配置 RDB / AOF
| 特性 | 说明 |
|---|---|
| 内存存储 | 速度极快(微秒级) |
| 多数据结构 | String / List / Set / Hash / ZSet |
| 单线程模型 | 简化并发,性能稳定 |
| 持久化 | RDB / AOF |
| 支持集群 | 主从、哨兵、Cluster |
二、Redis 安装指南
2.1 Linux(Ubuntu / Debian)安装
sudo apt update
sudo apt install redis-server -y
检查版本:
redis-server --version
启动 Redis:
sudo systemctl start redis
sudo systemctl enable redis
2.2 macOS(Homebrew)安装
brew update
brew install redis
启动 Redis:
brew services start redis
或手动启动:
redis-server
2.3 Docker 安装(推荐)
docker run -d \
--name redis \
-p 6379:6379 \
redis:7
查看容器:
docker ps
三、Redis 安装验证与连接方式详解
3.1 redis-cli 连接方式(完整参数说明)
redis-cli 是 Redis 官方提供的命令行客户端,支持指定 IP、端口、密码、数据库编号 等参数。
3.1.1 基本连接(本机默认)
redis-cli
等价于:
redis-cli -h 127.0.0.1 -p 6379
3.1.2 指定 IP 和端口连接
redis-cli -h 192.168.1.100 -p 6379
常见场景:
-
连接远程 Redis
-
Docker / K8s 环境
-
测试 / 预发环境
3.1.3 带密码连接(-a)
redis-cli -h 127.0.0.1 -p 6379 -a yourpassword
⚠️ 安全提示:
-
命令行中明文密码可能被
ps看到 -
生产环境建议使用环境变量或
.rediscli配置
示例(环境变量):
export REDISCLI_AUTH=yourpassword
redis-cli -h 127.0.0.1 -p 6379
3.1.4 连接指定数据库(-n)
Redis 默认有 16 个数据库(0--15)。
redis-cli -n 1
或:
redis-cli -h 127.0.0.1 -p 6379 -a pwd -n 2
3.1.5 URI 方式连接(推荐)
redis-cli -u redis://:password@127.0.0.1:6379/0
适合:
-
脚本
-
CI / 自动化工具
-
统一连接格式
redis-cli
成功后进入:
127.0.0.1:6379>
3.2 PING 测试与认证验证
PING
返回:
PONG
如果未认证:
(error) NOAUTH Authentication required.
认证方式:
AUTH yourpassword
PING
返回:
PONG
👉 说明 Redis 服务 正常运行。
3.3 查看 Redis 基本信息
INFO
查看服务器信息:
INFO server
查看内存使用:
INFO memory
四、Redis 核心数据结构与使用语义
理解 Redis 的数据结构,比记住命令更重要。
下面不仅列命令,还会说明:
-
适合什么业务场景
-
常见误用点
4.1 String(字符串)
最基础、最常用的数据类型。
常用命令
SET key value
GET key
DEL key
EXISTS key
示例:
SET name "redis"
GET name
设置过期时间(秒):
SETEX token 60 "abc123"
TTL token
自增 / 自减(计数器):
INCR count
DECR count
4.2 List(列表)
有序、可重复,常用于 消息队列。
常用命令
LPUSH list a b c
RPUSH list x y z
LRANGE list 0 -1
LPOP list
RPOP list
示例:
LPUSH tasks task1
task2
LRANGE tasks 0 -1
阻塞式队列:
BLPOP tasks 10
4.3 Set(集合)
无序、不重复。
常用命令
SADD set a b c
SMEMBERS set
SISMEMBER set a
SREM set a
集合运算:
SUNION set1 set2
SINTER set1 set2
SDIFF set1 set2
4.4 Hash(哈希)
适合存储 对象结构。
常用命令
HSET user:1 name tom age 18
HGET user:1 name
HGETALL user:1
HDEL user:1 age
是否存在字段:
HEXISTS user:1 name
4.5 ZSet(有序集合)
带分数(score),常用于 排行榜。
常用命令
ZADD rank 100 alice 90 bob 80 tom
ZRANGE rank 0 -1 WITHSCORES
ZREVRANGE rank 0 -1 WITHSCORES
按分数范围查询:
ZRANGEBYSCORE rank 80 100
五、Key 管理与通用命令
KEYS *
SCAN 0
TYPE key
EXPIRE key 60
TTL key
PERSIST key
⚠️ 生产环境避免使用 KEYS * ,推荐 SCAN。
六、Redis 配置文件(redis.conf)详解
Redis 的大多数行为由 redis.conf 控制,理解配置文件是生产使用的关键。
6.1 redis.conf 文件位置
常见位置:
/etc/redis/redis.conf # Linux
/usr/local/etc/redis.conf # macOS (brew)
启动时指定配置文件:
redis-server /etc/redis/redis.conf
6.2 网络与安全配置(重点)
bind(监听地址)
bind 127.0.0.1
含义:
- 仅允许本机访问
允许远程访问:
bind 0.0.0.0
protected-mode(保护模式)
protected-mode yes
-
未设置密码 + 监听公网时自动拒绝访问
-
生产环境强烈建议保留
requirepass(访问密码)
requirepass yourpassword
设置后:
-
所有命令需认证
-
客户端需使用
-a或AUTH
port(端口)
port 6379
6.3 数据库与 Key 空间配置
databases 16
对应:
SELECT 0
SELECT 1
6.4 内存管理配置(生产必看)
最大内存
maxmemory 2gb
淘汰策略
maxmemory-policy allkeys-lru
常见策略:
| 策略 | 说明 |
|---|---|
| noeviction | 不淘汰,写入报错 |
| allkeys-lru | 所有 key 使用 LRU(推荐) |
| volatile-lru | 仅过期 key 使用 LRU |
6.5 持久化配置(基础认知)
RDB(快照)
save 900 1
save 300 10
save 60 10000
AOF(追加日志)
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
七、Redis 服务管理与运行方式
7.1 systemctl 管理(Linux)
sudo systemctl start redis
sudo systemctl stop redis
sudo systemctl restart redis
sudo systemctl status redis
7.2 前台 / 后台运行
daemonize yes
日志文件:
logfile /var/log/redis/redis.log
7.3 Docker Redis 常见配置
docker run -d \
--name redis \
-p 6379:6379 \
-v ./redis.conf:/usr/local/etc/redis/redis.conf \
redis:7 \
redis-server /usr/local/etc/redis/redis.conf
八、Redis 运维与排查命令合集
INFO
INFO clients
INFO memory
INFO persistence
INFO replication
CLIENT LIST
MONITOR
查看慢查询:
SLOWLOG GET 10
九、生产环境强烈建议
-
一定要:
-
设置
requirepass -
限制
bind -
设置
maxmemory
-
-
避免:
-
KEYS * -
大 Key
-
超大 Value
-
十、总结
到这里,你已经掌握了:
-
Redis 安装 & 验证
-
redis-cli 的 完整连接方式
-
redis.conf 的 核心配置项
-
生产环境最关键的安全与内存设置
这已经是 工程级 Redis 入门。
10.1 配置文件位置
常见路径:
/etc/redis/redis.conf
关键配置:
bind 0.0.0.0
protected-mode yes
requirepass yourpassword
10.2 重启 Redis
sudo systemctl restart redis
或 Docker:
docker restart redis
十一、常见问题排查
11.1 连接失败
Could not connect to Redis
排查步骤:
-
Redis 是否启动
-
端口是否监听(6379)
-
防火墙是否放行
-
bind / requirepass 配置
11.2 内存占用过高
INFO memory
可设置最大内存:
maxmemory 2gb
maxmemory-policy allkeys-lru
十二、学习建议
-
优先掌握:String / Hash / List
-
配合业务理解:缓存、计数、队列
-
后续进阶:
-
Redis 持久化(RDB / AOF)
-
主从复制
-
哨兵 & Cluster
-
十三、总结
Redis 是后端系统中必备组件 ,掌握基础命令 + 安装验证,已经可以覆盖 80% 实际工作场景。