首页 / Redis 入门教程 / 启动、停止与基本配置

Redis 入门教程

启动、停止与基本配置

本教程共 40 篇 · 第 3 篇 · 更新于 2026-08-02

redis配置redis.conf守护进程protected-mode

3. 启动、停止与基本配置

本节目标

  • redis-server 以前台和后台(守护进程)两种方式启动 Redis
  • redis-cli shutdown 正确停止 Redis 并理解「是否保存数据」
  • 理解 redis.confbindprotected-modeportdaemonize 等核心配置项
  • 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-cliSHUTDOWN

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 为准):

网络与访问

配置项默认值说明
bind127.0.0.1 -::1监听的网卡 IP。默认只绑本机回环,外部无法连接
protected-modeyes保护模式。当 bind 不是全部网卡且没有设密码时,拒绝外部连接,防止裸奔暴露
port6379监听端口(作者 antirez 取了手机键盘上 MERZ 对应的数字)
tcp-backlog511TCP 连接队列长度
timeout0客户端空闲多少秒后断开,0 表示不断开
tcp-keepalive300心跳间隔(秒),用于探测死连接

protected-mode 是 Redis 的安全护栏:如果你把 bind 改成 0.0.0.0(允许所有网卡访问),务必同时设置密码或关闭保护模式,否则 Redis 会拒绝非本机连接。生产环境更推荐「保留 bind 限制 + 设密码 + 用防火墙」的组合。

进程与日志

配置项默认值说明
daemonizeno是否后台运行
pidfile/var/run/redis_6379.pid守护进程 PID 文件
logfile""日志文件路径,空表示输出到标准输出
databases16数据库编号数量(0–15),用 SELECT 切换
dir./工作目录,RDB/AOF 等文件写到这里

持久化相关(详见后续持久化章节)

配置项默认值说明
save3600 1 300 100 60 10000RDB 触发条件:N 秒内 M 次写则快照
rdbcompressionyesRDB 是否 LZF 压缩
stop-writes-on-bgsave-erroryes后台保存出错时拒绝写,避免无声丢数据
appendonlyno是否开启 AOF
appendfilenameappendonly.aofAOF 文件名

提示: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 才能操作
maxclients10000最大并发连接数(受系统文件描述符限制)

内存与淘汰

配置项默认值说明
maxmemory0(不限制)最大内存上限,0 表示由系统决定
maxmemory-policynoeviction内存满时的淘汰策略(详见内存淘汰章节)

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-entrieslist-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 等实战技巧。