[toc]
redis安装
docker安装
- docker
- compose
docker run -d \
--name redis \
-p 6379:6379 \
-v /data/docker-volume/redis/data:/data \
-v /data/docker-volume/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf \
redis:8 \
redis-server /usr/local/etc/redis/redis.conf
cat > docker-compose.yml << EOF
services:
redis:
image: redis:8
container_name: redis
restart: always
ports:
- "6379:6379"
volumes:
- ./data:/data
- ./redis.conf:/usr/local/etc/redis/redis.conf
command: >
redis-server /usr/local/etc/redis/redis.conf
EOF
源码安装
下载源码包
export REDIS_VERSION=8.2.3
wget http://download.redis.io/releases/redis-${REDIS_VERSION}.tar.gz
解压缩包
tar xf redis-${REDIS_VERSION}.tar.gz -C /usr/local
编译安装
cd /usr/local/redis-${REDIS_VERSION}
make
添加环境变量
cat > /etc/profile.d/redis.sh << EOF
export PATH="/usr/local/redis-${REDIS_VERSION}/src:$PATH"
EOF
source /etc/profile
创建相关目录
mkdir -p /etc/redis/6379
mkdir -p /var/log/redis/6379
mkdir -p /var/run/redis/6379
创建redis配置文件
cat > /etc/redis/6379/redis.conf << EOF
# 是否守护进程模式启动
daemonize no
# 使用 systemd 监管
supervised systemd
# 端口 日志 pid文件
port 6379
logfile /var/log/redis/6379/redis.log
pidfile /var/run/redis/redis_6379.pid
# 持久化数据文件存储位置
dir /etc/redis/6379
# RDB持久化数据文件名称
dbfilename dump.rdb
EOF
使用systemd管理redis
说明
这边并没有使用 ExecStop=/bin/kill -s QUIT $MAINPID 这样的命令来停止redis,因为使用这个语句在运行 systemctl stop redis后,redis并未执行关闭动作,而是直接退出,这时候用 systemctl status redis 查看状态是failed,只有用 ExecStop=/install_path/bin/redis-cli -p 6379 shutdown 才能正确停止redis
cat > /usr/lib/systemd/system/redis.service << EOF
[Unit]
Description=Redis
After=network.target
[Service]
# Type=forking
PIDFile=/var/run/redis/redis_6379.pid
ExecStart=/usr/local/redis-${REDIS_VERSION}/src/redis-server /etc/redis/6379/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/redis-${REDIS_VERSION}/src/redis-cli -p 6379 shutdown
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
启动redis
# 重载系统服务
systemctl daemon-reload
# 启动redis
systemctl enable redis && systemctl start redis