Redis单机部署

标签(空格分隔): Redis


组件安装

  1. # 给CentOS7安装remi源
  2. sudo yum --assumeyes install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
  3. # 确认包信息
  4. yum --enablerepo=remi info redis
  5. # 安装redis
  6. sudo yum --enablerepo=remi --assumeyes install redis

单机部署

部署服务

# 准备工作目录
rm --recursive --force ~/redis-singleton
mkdir --parents ~/redis-singleton
# 复制样板文件然后配置好
sudo cp /etc/redis.conf ~/redis-singleton/
sudo cp /usr/lib/systemd/system/redis.service ~/redis-singleton/
sudo chown --recursive ${USER}:${USER} ~/redis-singleton
# 端口逐个配置和启动
for port in 6379;
do
    # 禁用后停止服务
    if [ -f /usr/lib/systemd/system/redis-singleton-$port.service ];
    then
        sudo systemctl disable redis-singleton-$port.service;
        sudo systemctl stop redis-singleton-$port.service;
        sudo rm --force /usr/lib/systemd/system/redis-singleton-$port.service;
    fi;
    # 清理配置文件
    if [ -f /etc/redis-singleton-$port.conf ]; then sudo rm --force /etc/redis-singleton-$port.conf; fi;
    # 从模板创建后配置 redis
    cp ~/redis-singleton/redis.conf ~/redis-singleton/redis-singleton-$port.conf;
    # 注意修改成对应主机的ip
    sed --in-place "s|^bind .*$|bind 0.0.0.0|g" ~/redis-singleton/redis-singleton-$port.conf;
    sed --in-place "s|^port .*$|port $port|g" ~/redis-singleton/redis-singleton-$port.conf;
    sed --in-place "s|^pidfile .*$|pidfile /var/run/redis-singleton-$port.pid|g" ~/redis-singleton/redis-singleton-$port.conf;
    sed --in-place "s|^logfile .*$|logfile /var/log/redis/redis-singleton-$port.log|g" ~/redis-singleton/redis-singleton-$port.conf;
    sed --in-place "s|^dir .*$|dir /var/lib/redis-singleton-$port|g" ~/redis-singleton/redis-singleton-$port.conf;
    sed --in-place "s|^appendonly .*$|appendonly yes|g" ~/redis-singleton/redis-singleton-$port.conf;
    # 从模板创建后配置 service
    cp ~/redis-singleton/redis.service ~/redis-singleton/redis-singleton-$port.service;
    sed --in-place --regexp-extended "s|^(ExecStart=.*redis-server +)[^ ]+( +.*)$|\1/etc/redis-singleton-$port.conf\2|g" ~/redis-singleton/redis-singleton-$port.service;
    sed --in-place --regexp-extended "s|^(ExecStop=/usr/libexec/redis-shutdown).*$|\1 redis-singleton-$port|g" ~/redis-singleton/redis-singleton-$port.service;
    sed --in-place "s|^RuntimeDirectory=.*$|RuntimeDirectory=redis-singleton-$port|g" ~/redis-singleton/redis-singleton-$port.service;
    # 放置配置文件
    sudo cp ~/redis-singleton/redis-singleton-$port.conf /etc/
    sudo chown redis:root /etc/redis-singleton-$port.conf
    sudo cp ~/redis-singleton/redis-singleton-$port.service /usr/lib/systemd/system/
    # 确保数据目录已创建且权限正确
    sudo mkdir --parents /var/lib/redis-singleton-$port
    sudo chown redis:redis /var/lib/redis-singleton-$port
    # 启用后启动服务
    sudo systemctl enable redis-singleton-$port.service;
    sudo systemctl start redis-singleton-$port.service;
    # 查看服务状态
    sudo systemctl status redis-singleton-$port.service;
done

连接服务

redis-cli -c -h 127.0.0.1 -p 6379

销毁服务

# 端口逐个停止和清理
for port in 6379;
do
    # 禁用后停止服务
    if [ -f /usr/lib/systemd/system/redis-singleton-$port.service ];
    then
        sudo systemctl disable redis-singleton-$port.service;
        sudo systemctl stop redis-singleton-$port.service;
        sudo rm --force /usr/lib/systemd/system/redis-singleton-$port.service;
    fi;
    # 清理配置文件
    if [ -f /etc/redis-singleton-$port.conf ]; then sudo rm --force /etc/redis-singleton-$port.conf; fi;
    # 清理所有数据
    if sudo [ -f /var/log/redis/redis-singleton-$port.log ]; then sudo rm --force /var/log/redis/redis-singleton-$port.log; fi;
    if [ -d /var/lib/redis-singleton-$port ]; then sudo rm --recursive --force /var/lib/redis-singleton-$port; fi;
done