以下是一个简单的Redis主从模式部署脚本,可以用于快速安装和配置Redis主从服务:
部署Redis主节点
#!/bin/bash
# 安装依赖库
sudo apt-get update
sudo apt-get install -y build-essential tcl wget
# 下载并编译Redis
cd /tmp
wget http://download.redis.io/releases/redis-6.0.11.tar.gz
tar xzf redis-6.0.11.tar.gz
cd redis-6.0.11
make
# 安装Redis
sudo make install
# 配置Redis主节点
sudo mkdir /etc/redis
sudo cp /tmp/redis-6.0.11/redis.conf /etc/redis/
sudo sed -i 's/^supervised no/supervised systemd/' /etc/redis/redis.conf
sudo sed -i 's/^dir .\//dir \/var\/lib\/redis/' /etc/redis/redis.conf
sudo sed -i 's/^logfile ""/logfile \/var\/log\/redis.log/' /etc/redis/redis.conf
sudo sed -i 's/^# replicaof <masterip> <masterport>/replicaof 127.0.0.1 6380/' /etc/redis/redis.conf
# 创建服务启动文件
sudo tee /etc/systemd/system/redis.service > /dev/null <<EOF
[Unit]
Description=Redis Server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
PIDFile=/var/run/redis.pid
Restart=always
User=root
[Install]
WantedBy=multi-user.target
EOF
# 启动Redis服务
sudo systemctl start redis
# 设置开机自启动
sudo systemctl enable redis
部署Redis从节点
#!/bin/bash
# 安装依赖库
sudo apt-get update
sudo apt-get install -y build-essential tcl wget
# 下载并编译Redis
cd /tmp
wget http://download.redis.io/releases/redis-6.0.11.tar.gz
tar xzf redis-6.0.11.tar.gz
cd redis-6.0.11
make
# 安装Redis
sudo make install
# 配置Redis从节点
sudo mkdir /etc/redis
sudo cp /tmp/redis-6.0.11/redis.conf /etc/redis/
sudo sed -i 's/^supervised no/supervised systemd/' /etc/redis/redis.conf
sudo sed -i 's/^dir .\//dir \/var\/lib\/redis/' /etc/redis/redis.conf
sudo sed -i 's/^logfile ""/logfile \/var\/log\/redis.log/' /etc/redis/redis.conf
sudo sed -i 's/^# slaveof <masterip> <masterport>/slaveof 127.0.0.1 6379/' /etc/redis/redis.conf
# 创建服务启动文件
sudo tee /etc/systemd/system/redis.service > /dev/null <<EOF
[Unit]
Description=Redis Server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
PIDFile=/var/run/redis.pid
Restart=always
User=root
[Install]
WantedBy=multi-user.target
EOF
# 启动Redis服务
sudo systemctl start redis
# 设置开机自启动
sudo systemctl enable redis
注意事项
主节点故障时,需要手动将从节点切换为主节点,可能会出现数据丢失。
主节点的性能影响整个系统的性能,因此需要适当配置主节点的硬件资源。
由于从节点只接收主节点的更新操作,因此在写入负载较高的情况下,从节点可能会出现延迟。
优点
可以增加读取性能,因为所有的读操作可以被重定向到从节点。
可以实现数据备份和灾难恢复。
可以扩展系统的读容量,简单易用,不需要大量编程工作来实现。
缺点
不支持自动故障恢复,需要手动干预。
不能解决数据冲突问题。如果两个节点同时修改同一个键值,则必须进行人工干预以确定正确的值。
在写入负载较高的情况下,从节点可能会出现延迟。