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
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 就行。
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,或者干脆关掉持久化(纯缓存场景)。
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>
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。准备好了吗?