3、Redis安装与配置:Linux/Mac/Windows安装、redis.conf核心配置、启动与关闭

好,咱们进入实战环节。Redis 装不上,后面全是白搭。我见过不少新手在安装这一步就卡了半天,其实没那么复杂。今天我把 Linux、Mac、Windows 三种系统的安装方式都捋一遍,再带你看看 redis.conf 里那些真正要命的配置项。

3.1 各平台安装方式

先说说我的习惯。我个人偏好 Linux 环境,生产环境也基本是 Linux。但开发机用 Mac 或 Windows 也很常见,咱们一个一个来。

3.1.1 Linux(CentOS / Ubuntu)

Linux 下安装 Redis,我推荐两种方式:源码编译和包管理器安装。

方式一:包管理器安装(省心)

# CentOS / RHEL
sudo yum install epel-release -y
sudo yum install redis -y

# Ubuntu / Debian
sudo apt update
sudo apt install redis-server -y

这种方式最快,但版本可能不是最新的。我记得有一次在 CentOS 7 上直接用 yum 装,装完发现是 3.2 版本,很多新特性用不了。所以如果你对版本有要求,建议用源码编译。

方式二:源码编译(可控)

# 下载最新稳定版
wget https://download.redis.io/releases/redis-7.2.4.tar.gz
tar xzf redis-7.2.4.tar.gz
cd redis-7.2.4

# 编译安装
make
sudo make install

编译时如果报错,大概率是缺 gcc 编译器。装一下就好:

sudo yum install gcc gcc-c++ make -y   # CentOS
sudo apt install build-essential -y    # Ubuntu
小技巧: 编译完成后,src 目录下会有 redis-server、redis-cli 等二进制文件。make install 会把这些文件复制到 /usr/local/bin,这样你就能全局调用了。

3.1.2 macOS

Mac 用户就简单了。我个人用 Homebrew 装,一行命令搞定:

brew install redis

装完之后,Homebrew 会提示你如何启动。你可以用 brew services 把它跑起来:

brew services start redis

或者直接前台运行:

redis-server /usr/local/etc/redis.conf

嗯,这里要注意:Mac 上 redis.conf 的默认路径是 /usr/local/etc/redis.conf。如果你找不到,可以用 brew info redis 查看具体位置。

3.1.3 Windows

Windows 下 Redis 官方其实没有原生支持。但微软团队维护过一个移植版,现在社区也提供了安装包。

方式一:使用 WSL(推荐)

我个人建议 Windows 用户用 WSL(Windows Subsystem for Linux)。装个 Ubuntu 子系统,然后按 Linux 的方式装 Redis。这样体验最接近生产环境。

方式二:直接下载安装包

去 Redis 官网的 Windows 版本页面下载 .msi 或 .zip 包。解压后直接运行 redis-server.exe 就行。

避坑指南: 我曾经在 Windows 上直接跑 Redis,发现性能比 Linux 差不少,而且有些高级特性(比如部分持久化策略)表现不稳定。所以生产环境千万别用 Windows 跑 Redis,开发调试可以凑合。

3.2 redis.conf 核心配置

装完 Redis,第一件事就是改配置。默认配置只适合本地测试,上生产必须调。我带你过一遍最关键的几个参数。

3.2.1 网络与安全配置

配置项 默认值 说明
bind 127.0.0.1 绑定 IP,默认只允许本机访问
port 6379 监听端口
requirepass (空) 设置密码,强烈建议开启
protected-mode yes 保护模式,开启后只允许本机访问

为什么要强调这些?我遇到过不止一次,有人把 Redis 部署到公网服务器,bind 设成 0.0.0.0,又没设密码。结果被挖矿程序盯上,CPU 跑满,数据全丢。所以我的习惯是:

  • 内网环境:bind 设成内网 IP,比如 192.168.1.100
  • 外网环境:坚决不暴露 Redis 端口,用 Nginx 或 SSH 隧道转发
  • 密码一定要设:requirepass YourStrongPassword

3.2.2 持久化配置

Redis 默认是内存数据库,但你可以让它把数据存到磁盘。两种方式:RDB(快照)和 AOF(追加日志)。

# RDB 配置
save 900 1        # 900秒内至少1个key变化,就触发快照
save 300 10       # 300秒内至少10个key变化
save 60 10000     # 60秒内至少10000个key变化
dbfilename dump.rdb
dir ./data

# AOF 配置
appendonly yes
appendfsync everysec   # 每秒同步一次,性能与安全的平衡点

我个人习惯是同时开启 RDB 和 AOF。RDB 用于快速恢复,AOF 保证数据不丢太多。但要注意,两者都开会影响写入性能。如果你对性能要求极高,可以只开 RDB,或者干脆关掉持久化(纯缓存场景)。

核心观点: 纯缓存场景(数据可丢失)可以关持久化。但如果是数据存储场景,至少开一种持久化方式。我见过有人把 Redis 当数据库用,却关了持久化,重启后数据全没了——那场面,真是欲哭无泪。

3.2.3 内存与淘汰策略

maxmemory 2gb                # 最大内存限制
maxmemory-policy allkeys-lru # 内存淘汰策略

maxmemory 设多大?看你的服务器内存。一般建议留 20%-30% 给操作系统和其他进程。比如服务器有 8GB 内存,Redis 设 5GB 左右比较稳妥。

淘汰策略有几种:

  • noeviction:内存满了直接报错,不淘汰(适合消息队列等场景)
  • allkeys-lru:淘汰最近最少使用的 key(最常用)
  • volatile-lru:只淘汰设置了过期时间的 key
  • allkeys-random:随机淘汰

我一般用 allkeys-lru。为什么?因为大多数场景下,最近访问的数据最可能再次被访问。你想想看,用户刚查过的商品详情,大概率会再查一次,对吧?

3.2.4 其他重要配置

配置项 推荐值 说明
daemonize yes 后台运行,否则终端一关 Redis 就停了
logfile /var/log/redis/redis.log 日志路径,排查问题必备
loglevel notice 日志级别,生产用 notice,调试用 verbose
timeout 300 客户端空闲多少秒后断开连接
tcp-keepalive 300 TCP 心跳检测,防止死连接

3.3 启动与关闭

配置改好了,怎么启动和关闭?这里也有讲究。

3.3.1 启动 Redis

前台启动(调试用)

redis-server /path/to/redis.conf

前台启动的好处是日志直接打印在终端,方便看启动过程有没有报错。我调试配置时习惯这么干。

后台启动(生产用)

确保 redis.conf 里 daemonize yes,然后:

redis-server /path/to/redis.conf

启动后可以用 ps -ef | grep redis 检查进程是否在跑。

使用 systemd 管理(推荐)

sudo systemctl start redis
sudo systemctl enable redis   # 开机自启
sudo systemctl status redis   # 查看状态

用 systemd 管理的好处是:崩溃了能自动重启,日志也统一管理。我现在的生产环境全用这种方式。

3.3.2 关闭 Redis

千万别直接 kill -9!Redis 可能正在写数据,强行杀掉会导致数据丢失。

正确方式一:使用 redis-cli

redis-cli shutdown

如果设了密码:

redis-cli -a YourPassword shutdown

正确方式二:使用 systemd

sudo systemctl stop redis

正确方式三:发送 SIGTERM 信号

kill -15 <redis-pid>
警告: 我曾经有一次线上事故,就是因为运维同学用 kill -9 关 Redis,导致 AOF 文件损坏,重启后数据恢复失败。最后花了两个小时从 RDB 备份里恢复数据。从那以后,我每次培训都强调:关 Redis 必须用 shutdown 命令,或者发 SIGTERM 信号。

3.3.3 验证是否正常运行

启动后,用 redis-cli 连上去看看:

redis-cli ping
# 返回 PONG 说明正常

redis-cli info server
# 查看服务器信息,包括版本、运行时间等

如果连不上,先检查防火墙有没有放行 6379 端口,再检查 redis.conf 里的 bind 配置。嗯,这两个问题占了 Redis 连接失败原因的 80%。

3.4 小结

安装和配置这部分,说白了就是三板斧:装好、配好、跑起来。但细节决定成败。bind 别设 0.0.0.0,密码一定要设,关闭要用 shutdown。这些坑我都踩过,你记住了就能少走弯路。

下一章咱们聊聊 Redis 的数据类型和常用命令。到时候我会结合真实场景,告诉你什么时候用 String,什么时候用 Hash,什么时候用 List。准备好了吗?