启动、停止与基本配置
本教程共 40 篇 · 第 3 篇 · 更新于 2026-08-02
3. 启动、停止与基本配置
本节目标
- 用
redis-server以前台和后台(守护进程)两种方式启动 Redis - 用
redis-cli shutdown正确停止 Redis 并理解「是否保存数据」 - 理解
redis.conf中bind、protected-mode、port、daemonize等核心配置项 - 用
CONFIG GET/CONFIG SET在运行时查看与修改配置 - 知道 Redis 8.x 把旧版的
ziplist相关配置改名成了listpack
3-1 启动 Redis
3-1.1 前台启动(最简)
如果 redis-server 已在 PATH 中,直接运行:
redis-server
你会看到启动日志:加载配置、监听端口 6379、准备就绪。这种「前台模式」适合临时测试——终端关掉,Redis 就停了。
3-1.2 指定配置文件启动
生产环境一定要用配置文件:
redis-server /path/to/redis.conf
配置文件里可以精确控制端口、持久化、内存上限等一切行为。
3-1.3 后台(守护进程)启动
在 redis.conf 中设置:
daemonize yes
然后正常启动,Redis 会退到后台运行,并把进程号(PID)写入 pidfile 指定的文件(Redis 8 默认为 /var/run/redis_6379.pid)。这种方式下关闭终端不会杀掉 Redis。
也可以用 systemd(通过包管理器安装时通常已配好):
sudo systemctl start redis-server
3-2 停止 Redis
不要直接 kill -9 杀进程——那可能中断持久化、损坏数据。正确做法是用 redis-cli 发 SHUTDOWN:
redis-cli shutdown
SHUTDOWN 默认会:先尝试执行一次 RDB 保存(若开启了 AOF,则按 AOF 规则落盘),再关闭服务。等价地:
# 关闭前保存(默认行为)
redis-cli shutdown save
# 关闭但不保存(会丢失未落盘的数据,慎用)
redis-cli shutdown nosave
如果你是用 systemd 管理:
sudo systemctl stop redis-server
提示:如果Redis 设置了访问密码(见 3.4 的
requirepass),停止时需要认证:redis-cli -a 你的密码 shutdown。出于安全,更推荐用REDISCLI_AUTH环境变量传密码,避免密码出现在命令历史里。
3-3 连接 Redis
启动后,用客户端连接:
redis-cli
127.0.0.1:6379> PING
PONG
连远程或用非默认端口:
redis-cli -h 192.168.1.100 -p 6380
如果你的 Redis 配置了 unixsocket(通过本地套接字文件通信,比 TCP 回环更快、也更安全),也可以用 -s 指定套接字文件来连接:
redis-cli -s /tmp/redis.sock
本地高并发的客户端(如本机应用连本机 Redis)常走 Unix socket 以省去 TCP 协议栈开销。无论哪种连接方式,连上后都建议先用 PING 探活,再执行正式命令。
3-4 redis.conf 关键配置项
redis.conf 是 Redis 的「总开关」。下面按「新手最该先理解」的顺序介绍核心项(默认值以 Redis 8.x 为准):
网络与访问
| 配置项 | 默认值 | 说明 |
|---|---|---|
bind | 127.0.0.1 -::1 | 监听的网卡 IP。默认只绑本机回环,外部无法连接 |
protected-mode | yes | 保护模式。当 bind 不是全部网卡且没有设密码时,拒绝外部连接,防止裸奔暴露 |
port | 6379 | 监听端口(作者 antirez 取了手机键盘上 MERZ 对应的数字) |
tcp-backlog | 511 | TCP 连接队列长度 |
timeout | 0 | 客户端空闲多少秒后断开,0 表示不断开 |
tcp-keepalive | 300 | 心跳间隔(秒),用于探测死连接 |
protected-mode 是 Redis 的安全护栏:如果你把 bind 改成 0.0.0.0(允许所有网卡访问),务必同时设置密码或关闭保护模式,否则 Redis 会拒绝非本机连接。生产环境更推荐「保留 bind 限制 + 设密码 + 用防火墙」的组合。
进程与日志
| 配置项 | 默认值 | 说明 |
|---|---|---|
daemonize | no | 是否后台运行 |
pidfile | /var/run/redis_6379.pid | 守护进程 PID 文件 |
logfile | "" | 日志文件路径,空表示输出到标准输出 |
databases | 16 | 数据库编号数量(0–15),用 SELECT 切换 |
dir | ./ | 工作目录,RDB/AOF 等文件写到这里 |
持久化相关(详见后续持久化章节)
| 配置项 | 默认值 | 说明 |
|---|---|---|
save | 3600 1 300 100 60 10000 | RDB 触发条件:N 秒内 M 次写则快照 |
rdbcompression | yes | RDB 是否 LZF 压缩 |
stop-writes-on-bgsave-error | yes | 后台保存出错时拒绝写,避免无声丢数据 |
appendonly | no | 是否开启 AOF |
appendfilename | appendonly.aof | AOF 文件名 |
提示:Redis 7 及以前,
save的默认是900 1 300 10 60 10000(15 分钟 1 次等)。Redis 8 把默认的 RDB 触发频率调低了(如上表3600 1 300 100 60 10000),更偏向少做快照、配合 AOF。具体以你所用版本的redis.conf注释为准。
安全
| 配置项 | 默认值 | 说明 |
|---|---|---|
requirepass | 空(关闭) | 连接密码。设置后客户端须先 AUTH 才能操作 |
maxclients | 10000 | 最大并发连接数(受系统文件描述符限制) |
内存与淘汰
| 配置项 | 默认值 | 说明 |
|---|---|---|
maxmemory | 0(不限制) | 最大内存上限,0 表示由系统决定 |
maxmemory-policy | noeviction | 内存满时的淘汰策略(详见内存淘汰章节) |
3-5 运行时查看与修改配置(CONFIG 命令)
不用重启就能看配置:
127.0.0.1:6379> CONFIG GET port
1) "port"
2) "6379"
127.0.0.1:6379> CONFIG GET bind
1) "bind"
2) "127.0.0.1 -::1"
查看所有配置(输出很长):
127.0.0.1:6379> CONFIG GET *
运行时修改(立即生效,但重启后丢失,除非同时写回文件):
127.0.0.1:6379> CONFIG SET loglevel "verbose"
OK
127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "verbose"
如果想让修改持久化到配置文件,用:
127.0.0.1:6379> CONFIG REWRITE
OK
CONFIG REWRITE 会把当前生效的配置(含 CONFIG SET 改过的值)重写回 redis.conf,无需手动编辑。
3-6 Redis 8.x 的一个命名变化:ziplist → listpack
早期 Redis 用一种叫 ziplist 的紧凑编码来节省小 Hash/List/Set/ZSet 的内存,对应配置项是 hash-max-ziplist-entries、list-max-ziplist-* 等。从 Redis 7.0 起,ziplist 被更健壮的 listpack 取代;Redis 8 的配置项已全面改名:
hash-max-listpack-entries 512
hash-max-listpack-value 64
list-max-listpack-size -2
set-max-intset-entries 512
zset-max-listpack-entries 128
zset-max-listpack-value 64
提示:你在网上看到的旧教程(尤其基于 5/6 版本的)仍在用
hash-max-ziplist-entries这类名字。在 Redis 8 里它们已更名为*-listpack-*,含义类似(超过阈值就从紧凑编码转为普通哈希表/跳表)。阅读旧资料时请自行对应,避免改了「无效配置」。
3-7 一个最小可跑的配置示例
下面是一份适合本地开发的精简 redis.conf:
bind 127.0.0.1 -::1
protected-mode yes
port 6379
daemonize yes
dir /var/lib/redis
requirepass yourStrongPassword
appendonly yes
启动:
redis-server /path/to/redis.conf
连接(带密码):
redis-cli -a yourStrongPassword
3-8 常见误区
- 误区:设了
bind 0.0.0.0就能外网连。 若protected-mode仍是yes且没设密码,Redis 仍会拒绝外部连接——这正是安全护栏在起作用。 - 误区:直接
kill -9关 Redis 没关系。 可能中断 RDB/AOF 落盘导致数据损坏,应优先用SHUTDOWN。 - 误区:
CONFIG SET改完就永久生效。 它只改运行时,重启会还原;要持久化请CONFIG REWRITE或手写配置文件。 - 误区:改了旧教程里的
ziplist参数就能调优。 Redis 8 已用listpack,旧参数名不再生效。
3-9 小结
- 启动:
redis-server [配置文件];后台跑设daemonize yes。 - 停止:用
redis-cli shutdown(默认先存后关),别用kill -9。 - 安全:外网暴露务必配
requirepass,并理解protected-mode的护栏逻辑。 - 调参:
CONFIG GET/SET看与改,CONFIG REWRITE落盘。 - 版本差异:Redis 8 用
listpack取代了旧ziplist配置名。
提示:版本基线说明。本教程正文统一以 Redis 8.x(最新稳定版) 表述。需要留意:官方 redis.io 下载页目前把
8.8标注为 “Latest stable”,而 GitHub 上 redis/redis 的最新发布标签为8.10.0;二者同属 8.x 大版本,命令与数据类型差异极小,本教程以8.10.0为准。
下一章我们深入 redis-cli 这个最常用的客户端,掌握交互模式、批量执行、扫描大 key 等实战技巧。