1. RDB(Redis DataBase)—— 全量快照

  • 特点:在指定时间间隔,将内存中的数据完整地保存为二进制文件 dump.rdb

  • 优点:文件小,恢复速度快

  • 缺点:可能丢失最后一次快照之后的数据(因为不是实时保存)

2. AOF(Append Only File)—— 增量日志

  • 特点:记录每一条写操作命令(类似 MySQL 的 binlog),追加到 appendonly.aof 文件

  • 优点:数据完整性高(最多丢失1秒数据)

  • 缺点:文件大,恢复速度慢

Centos环境如下:Linux linux2 3.10.0-1160.el7.x86_64

使用的redis文件包:redis-5.0.6.tar.gz

1、利用以下shell脚本安装redis文件(如果redis版本包高于5.0 Centos7.9的gcc编译文件可能不能使用需要提高编译软件版本)

#!/bin/bash

# ========== 变量配置 ==========
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'

SOURCE_DIR="/root"
# 通配符自动匹配任意 redis 开头的 tar.gz 包
BINARY_PATH=$(ls ${SOURCE_DIR}/redis*.tar.gz 2>/dev/null | head -n 1)
BINARY_NAME=$(basename "$BINARY_PATH" 2>/dev/null)
UNPACK_DIR="${SOURCE_DIR}/$(echo "$BINARY_NAME" | sed 's/\.tar\.gz$//')"
INSTALL_DIR="/usr/local/redis"
REDIS_SERVER="${INSTALL_DIR}/src/redis-server"
REDIS_CONF="${INSTALL_DIR}/redis.conf"
SERVICE_FILE="/etc/systemd/system/redis.service"
REDIS_PASSWORD="Redis@123456"

# ========== 函数:检查状态 ==========
check_status() {
    if [ $? -eq 0 ]; then
        echo -e "${GREEN}[OK] $1${NC}"
    else
        echo -e "${RED}[ERR] $1!脚本终止。${NC}"
        exit 1
    fi
}

echo -e "${YELLOW}>>> 开始 Redis 自动化安装流程 <<<${NC}"

# 1. 检查源码包是否存在
if [ -z "$BINARY_NAME" ]; then
    echo -e "${RED}[错误] 在 ${SOURCE_DIR} 下未找到 redis*.tar.gz 压缩包!请下载后重试。${NC}"
    exit 1
fi
echo -e "${GREEN}[检查] 成功找到源码包: ${BINARY_NAME}${NC}"

# 2. 清理旧环境 (确保幂等性)
if [ -d "${UNPACK_DIR}" ]; then
    echo -e "${BLUE}[提示] 发现旧的解压目录,进行清理...${NC}"
    cd ${UNPACK_DIR} && make distclean >/dev/null 2>&1
    rm -rf ${UNPACK_DIR}
fi

# 3. 解压
echo -e "${YELLOW}[1/6] 正在解压...${NC}"
cd ${SOURCE_DIR} && tar -zxvf ${BINARY_NAME}
check_status "解压完成"

# 4. 安装依赖
echo -e "${YELLOW}[2/6] 检查并安装 gcc 和 make...${NC}"
yum install -y gcc make >/dev/null 2>&1
check_status "依赖安装完成"

# 5. 编译
if [ -f "${REDIS_SERVER}" ]; then
    echo -e "${BLUE}[跳过] 二进制文件已存在,跳过编译。${NC}"
else
    echo -e "${YELLOW}[3/6] 正在编译 (请耐心等待,可能需要几分钟)...${NC}"
    cd ${UNPACK_DIR} && make
    check_status "编译成功"
fi

# 6. 迁移文件
if [ -d "${INSTALL_DIR}" ] && [ -f "${REDIS_SERVER}" ]; then
    echo -e "${BLUE}[跳过] 目标目录文件已存在。${NC}"
else
    echo -e "${YELLOW}[4/6] 移动文件到 ${INSTALL_DIR}...${NC}"
    if [ ! -d "${INSTALL_DIR}" ]; then
        mkdir -p ${INSTALL_DIR}
    fi
    mv ${UNPACK_DIR}/* ${INSTALL_DIR}/
    check_status "文件移动完成"
fi

# 7. 配置文件调整
echo -e "${YELLOW}[5/6] 检查并调整配置文件...${NC}"
if [ -f "${REDIS_CONF}" ]; then
    # 备份老配置
    cp ${REDIS_CONF} ${REDIS_CONF}.bak
    
    # 修改密码
    if ! grep -q "^requirepass" "${REDIS_CONF}"; then
        echo "requirepass ${REDIS_PASSWORD}" >> ${REDIS_CONF}
        echo -e "${GREEN}[OK] 已配置 Redis 密码。${NC}"
    fi
    
    # 开启后台运行
    sed -i 's/^daemonize no/daemonize yes/' ${REDIS_CONF}
    
    # 【修改点】允许所有外部IP访问 (bind 0.0.0.0)
    # 先尝试注释掉默认的 bind 127.0.0.1
    sed -i 's/^bind 127.0.0.1/# bind 127.0.0.1/' ${REDIS_CONF}
    # 然后在文件末尾追加 bind 0.0.0.0
    if ! grep -q "^bind 0.0.0.0" "${REDIS_CONF}"; then
        echo "bind 0.0.0.0" >> ${REDIS_CONF}
    fi
    echo -e "${GREEN}[OK] 已设置允许所有外部 IP 访问 (bind 0.0.0.0)。${NC}"
    
    # 关闭保护模式(通常配合 bind 0.0.0.0 和密码使用)
    sed -i 's/^protected-mode yes/protected-mode no/' ${REDIS_CONF}
    echo -e "${GREEN}[OK] 配置文件调整完毕。${NC}"
fi

# 8. 添加 Systemd 服务
echo -e "${YELLOW}[6/6] 写入系统服务文件...${NC}"
cat > ${SERVICE_FILE} <<EOF
[Unit]
Description=Redis
After=network.target

[Service]
Type=forking
ExecStart=${REDIS_SERVER} ${REDIS_CONF}
ExecStop=${INSTALL_DIR}/src/redis-cli -a ${REDIS_PASSWORD} shutdown
Restart=always
User=root

[Install]
WantedBy=multi-user.target
EOF
check_status "服务文件写入成功"

# 9. 启动服务
echo -e "${YELLOW}[启动服务并设置开机自启...]${NC}"
systemctl daemon-reload
systemctl start redis
check_status "Redis 启动"
systemctl enable redis
check_status "设置开机自启"

echo -e "${GREEN}============================================${NC}"
echo -e "${GREEN} 🎉 Redis 安装与启动全部完成! 🎉${NC}"
echo -e "${GREEN}============================================${NC}"
echo -e "已安装包: ${BINARY_NAME}"
echo -e "密码: ${REDIS_PASSWORD}"
echo -e "测试连接: ${INSTALL_DIR}/src/redis-cli -a '${REDIS_PASSWORD}' ping"
echo -e "管理状态: systemctl status redis"

上方的脚本配置了systemd的redis服务

提醒:
ExecStart=/usr/local/redis/src/redis-server /usr/local/redis/redis.conf
ExecStop=/usr/local/redis/src/redis-cli -a Redis@123456 shutdown
因我的脚本配置了redis的启动密码所有根据自己的情况修改redis.service里的配置文件
还有文件所在位置

运行上方shell脚本需要给脚本添加x可执行权限

chmod +x 

配置完成后需要配置环境变量

vi /etc/profile  #利用大写的G跳转到末尾

添加如下:
export PATH=$PATH:/usr/local/redis/src #这里的路径是根据我的shell脚本填写,根据实际情况填写
wq #保存退出
source /etc/profile #刷新系统配置文件

然后启用redis:

redis-server /usr/local/redis/redis.conf  #根据配置文件位置修改
如果出现redis-server 没有发现这个命令 (问题就是环境变量没配置好,或者其他问题)
其他错误则  journalctl -u redis.service 查看错误所在位置

RDB配置(单独配置):

vi /usr/lcoal/redis/redis.conf #利用G跳转到尾部

添加以下内容(配置文件根据所需要的情况来添加,可以自行搜索相关配置文件代码):

# 启用RDB(默认已开启)
save 900 1      # 900秒内至少1次修改则触发快照
save 300 10     # 300秒内至少10次修改
save 60 10000   # 60秒内至少10000次修改
appendonly no  #关闭AOF
dir /var/lib/redis
dbfilename dump.rdb     
# 开启RDB压缩(节省磁盘空间)
rdbcompression yes

# 开启RDB校验和(数据完整性校验)
rdbchecksum yes

# 在生成RDB时,如果出错则停止写入(保护数据一致性)
stop-writes-on-bgsave-error yes

#配置完成后wq保存退出

根据配置创建相关文件

mkdir -p /var/lib/redis  #这里创建成功后ROB启动后他生成的rdb文件就会出现在redis目录下
chown -R redis:redis /var/lib/redis #赋予给redis用户

修改完成后再启动redi

redis-server /etc/redis/redis.conf  

启动完成后可以通过redis-cli进行测试

redis-cli  -a Redis@123456 set test_rdb "HELLo,RDB"   #这里test_rdb是键(Key)唯一标识这条数据
redis-cli  -a Redis@123456 get test_rdb  #这里查询这个key
HELLo,RDB   #这里是redis-cli get test_rdb的输出内容
redis-cli  -a Redis@123456 save   #手动触发RDB快照
ls -lh /var/lib/reids/dump.rdb (就会发现生成了一个dump.rdb文件)
#这里-a是因为上方的脚本配置了redis密码所以-a a添加密码 (如果不需要自行进入redis.conf文件内删除requirepass这行)

AOF(单独配置):

vi /usr/local/redis/redis.conf  #大写G跳转到尾部
添加如下代码:
# ===== 只开启 AOF =====
# 关闭 RDB 快照(注释掉所有 save 行)
# save 900 1
# save 300 10
# save 60 10000

# 开启 AOF
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec      # 每秒同步(推荐)
# appendfsync always      # 每次同步(最安全)
# appendfsync no          # 系统控制(性能最好)

# AOF 重写策略
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

# AOF 容错
aof-load-truncated yes

# 文件存储目录
dir /var/lib/redis

或者使用catI/O重定向方法写入

cat >> /usr/local/redis/redis.conf << 'EOF'
# ===== 只开启 AOF =====
# 关闭 RDB 快照(注释掉所有 save 行)
# save 900 1
# save 300 10
# save 60 10000

# 开启 AOF
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec      # 每秒同步(推荐)
# appendfsync always      # 每次同步(最安全)
# appendfsync no          # 系统控制(性能最好)

# AOF 重写策略
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

# AOF 容错
aof-load-truncated yes

# 文件存储目录
dir /var/lib/redis
EOF

创建目录和启动Redis

mkdir -p /var/lib/redis
chown redis:redis /var/lib/redis
redis-server /usr/local/redis/redis.conf 
测试:
redis-cli  -a Reids@123456 set AOF_serce "Hello"  #这里AOF_serce是键可以自行设置
redis-cli -a Redis@123456 get AOF_serce #查看键
redis-cli -a Redis@123456 save #手动创建
ls -lah /var/lib/redis/ #这里会出现一个appendonly.aof文件(这里根据配置文件的name可以进行修改)

AOF和DBP一起配置:

vi /usr/local/redis/redis.conf
添加以下代码:

# ==================== RDB 持久化 ====================

# 快照触发条件
save 900 1
save 300 10
save 60 10000

# RDB 文件名
dbfilename dump.rdb

# 数据存储目录
dir /var/lib/redis

# 压缩 RDB 文件
rdbcompression yes

# 启用校验和
rdbchecksum yes

# 快照出错时停止写入
stop-writes-on-bgsave-error yes

# ==================== AOF 持久化 ====================

# 开启 AOF
appendonly yes

# AOF 文件名
appendfilename "appendonly.aof"

# 同步策略(推荐 everysec)
appendfsync everysec

# 重写时禁止同步(提高性能)
no-appendfsync-on-rewrite no

# AOF 自动重写条件
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

# 加载时忽略 AOF 末尾错误数据
aof-load-truncated yes

# ==================== 混合持久化 ====================

# 开启混合持久化(Redis 4.0+ 支持)
aof-use-rdb-preamble yes

# ==================== 内存管理 ====================

# 最大内存(根据服务器配置,单位 byte)
# maxmemory 1gb
# maxmemory-policy volatile-lru

# ==================== 慢日志 ====================

slowlog-log-slower-than 10000
slowlog-max-len 128

# ==================== 客户端连接 ====================

maxclients 10000
timeout 0
tcp-keepalive 300

# ============================================================
# 配置结束
# ============================================================

然后依旧测试和手动save

更多推荐