一、卸载旧版本 Redis
sudo systemctl stop redis
sudo yum remove -y redis
确认卸载完成:
redis-server --version
# 应该提示找不到命令
二、安装 Redis 7.x(源码安装)
- 安装依赖工具
sudo yum install -y gcc make tcl
- 下载 Redis 最新稳定版(这里以 7.0.12 为例,版本可在 https://redis.io/download 查看)
cd /usr/local/src
sudo curl -O http://download.redis.io/releases/redis-7.0.12.tar.gz
sudo tar xzf redis-7.0.12.tar.gz
cd redis-7.0.12
- 编译安装
sudo make
sudo make install
三、配置 Redis
- 复制默认配置文件到
/etc/redis.conf
sudo mkdir -p /etc
sudo cp redis.conf /etc/redis.conf
- 修改配置文件(用你喜欢的编辑器)
sudo vi /etc/redis.conf
修改以下内容:
- 只允许本地访问(默认已是
bind 127.0.0.1 ::1
)
bind 127.0.0.1 ::1
- 关闭远程访问(不允许外部访问,默认)
- 开启 AOF 持久化
找到:
appendonly no
改成:
appendonly yes
- 关闭 RDB 快照(可选,如果没有忽略即可)
如果只用 AOF,想禁用 RDB快照,注释或删掉所有 save
行,例如:
# save 900 1
# save 300 10
# save 60 10000
四、创建 Redis systemd 服务文件
创建 /etc/systemd/system/redis.service
:
sudo tee /etc/systemd/system/redis.service > /dev/null <<EOF
[Unit]
Description=Redis In-Memory Data Store
After=network.target
[Service]
User=root
Group=root
ExecStart=/usr/local/bin/redis-server /etc/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always
[Install]
WantedBy=multi-user.target
EOF
注意:
ExecStart
和ExecStop
路径需与which redis-server
和which redis-cli
输出路径一致。
五、启动并设置开机自启
sudo systemctl daemon-reload
sudo systemctl start redis
sudo systemctl enable redis
sudo systemctl status redis
六、验证
- 连接 Redis
redis-cli ping
返回 PONG
表示正常。
- 验证 AOF 持久化是否开启
redis-cli config get appendonly
返回:
1) "appendonly"
2) "yes"
七、遇到的异常
执行sudo yum remove -y redis成功然后执行redis-server –version还是提示: Redis server v=4.0.12 sha=00000000:0 malloc=jemalloc-4.0.3 bits=64 build=eb7d071b5f649f3e
解决步骤:
- 查找 redis-server 路径
which redis-server
输出示例:
/usr/bin/redis-server
这个就是你现在执行的 redis-server 路径。
- 确认该文件属于哪个包
rpm -qf $(which redis-server)
如果返回内容表明没有对应包,说明是残留文件,直接删除它即可。
- 删除旧版本 redis-server 和 redis-cli
sudo rm -f $(which redis-server)
sudo rm -f $(which redis-cli)
有时候系统里可能还有其他目录残留,可以用下面命令搜一搜:
sudo find /usr/local /usr/bin /usr/sbin /bin /sbin -name "redis-server"
sudo find /usr/local /usr/bin /usr/sbin /bin /sbin -name "redis-cli"
确认找到后也删除对应文件。
- 重新确认已删干净
redis-server --version
应该提示找不到命令。