Redis安装
1 编译和安装所需的包:
# yum install gcc tcl
2 解压Redis(此处须自行去官网下载Redis安装包,并上传到服务器)
# mkdir /home/App
# cd /home/App
# tar zxf redis-5.0.7.tar.gz
3 进入Redis所在文件夹
# cd redis-5.0.7
4 编译安装Redis
# make
# make install PREFIX=/opt/redis/redis-5.0.7
5 安装完成后,可以看到/opt/redis/redis-5.0.7目录下有一个bin目录,bin目录里就是redis的命令脚本:
# cd /opt/redis/redis-5.0.7/bin
redis-benchmark redis-check-aof redis-check-rdb redis-cli
redis-sentinel redis-server
6 从redis源码里面复制一份配置文件 redis.conf
# mkdir /opt/redis/redis-5.0.7/conf
# cp /home/App/redis-5.0.7/redis.conf /opt/redis/redis-5.0.7/conf/redis.conf
7 把redis的命令脚本全部复制一份到 /usr/local/bin 环境变量下面
# cp /opt/redis/redis-5.0.7/bin/redis-* /usr/local/bin
8 修改 redis.conf 文件改为后台守护进程
# vim /opt/redis/redis-5.0.7/conf/redis.conf
daemonize yes # 改 no 为 yes
9 这是可以启动redis了
# redis-server /opt/redis/redis-5.0.7/conf/redis.conf
10 可以看到redis启动成功了
[root@localhost /]# redis-server /opt/redis/redis-5.0.7/conf/redis.conf
5665:C 05 Jan 2020 20:42:09.047 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
5665:C 05 Jan 2020 20:42:09.047 # Redis version=5.0.7, bits=64, commit=00000000, modified=0, pid=5665, just started
5665:C 05 Jan 2020 20:42:09.047 # Configuration loaded
[root@localhost /]# ps aux|grep redis
root 5666 0.0 0.7 153900 7592 ? Ssl 20:42 0:00 redis-server 127.0.0.1:6379
root 5672 0.0 0.0 112712 960 pts/0 R+ 20:42 0:00 grep --color=auto redis
[root@localhost /]#
开机自启动
创建 redis.service 内容
# vim /etc/systemd/system/redis.service
代码内容
[Unit]
Description=redis-server
After=network.target
[Service]
Type=forking
# 根据自己项目 和 配置conf文件 位置修改
ExecStart=/opt/redis/redis-5.0.7/bin/redis-server /opt/redis/redis-5.0.7/conf/redis.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
重新加载服务文件
# systemctl daemon-reload
加入开机自启
# systemctl enable redis.service
reboot 重启可以看到 linux 可以看到redis已经启动
Connecting to 192.168.172.31:22...
Connection established.
To escape to local shell, press Ctrl+Alt+].
WARNING! The remote SSH server rejected X11 forwarding request.
Last login: Sun Jan 5 20:36:22 2020 from 192.168.172.1
[root@localhost ~]# ps aux|grep redis
root 1051 0.0 0.7 153900 7704 ? Ssl 20:53 0:00 /opt/redis/redis-5.0.7/bin/redis-server 127.0.0.1:6379
root 1325 0.0 0.0 112712 960 pts/0 R+ 20:55 0:00 grep --color=auto redis
[root@localhost ~]#
主从复制
这里用的是2台服务器+单台多实例端口来实现redis主从复制的,1主3从
首先按上面方法搭建另外一台服务器的redis
主服务器:
master ip 192.168.172.11
port 6379
另一台 从服务器:
slave ip 192.168.172.21
port 6379
创建日志文件
mkdir /opt/redis/redis-5.0.7/logs
192.168.172.11 redis.conf 文件修改
# 测试环境注释掉本地绑定IP,正式环境要绑定自己的服务器IP
# bind 127.0.0.1
port 6379
daemonize yes
pidfile "/opt/redis/redis-5.0.7/redis_6379.pid"
logfile "/opt/redis/redis-5.0.7/logs/redis_6379.log"
# master 应答密码
requirepass "pwd@123"
# slave 请求密码 考虑的哨兵集群 这里先添加上
masterauth "pwd@123"
maxclients 10000
maxmemory 256mb
maxmemory-policy volatile-lru
192.168.172.21 redis.conf 文件修改
# 测试环境注释掉本地绑定IP,正式环境要绑定自己的服务器IP
# bind 127.0.0.1
port 6379
daemonize yes
pidfile "/opt/redis/redis-5.0.7/redis_6379.pid"
logfile "/opt/redis/redis-5.0.7/logs/redis_6379.log"
# 绑定master IP 端口
replicaof 192.168.172.11 6379
# master 应答密码
requirepass "pwd@123"
# slave 请求密码 考虑的哨兵集群 这里先添加上
masterauth "pwd@123"
# 多个slave 的 replica-priority 最好不要设定成一样的 容易引起哨兵报错
replica-priority 101
maxclients 10000
maxmemory 256mb
maxmemory-policy volatile-lru
配置好文件后 检查主服务器 192.168.172.11 的6379端口是否开放,否则会导致从服务器连接不上
查看所有打开的端口:
firewall-cmd --zone=public --list-ports
添加
firewall-cmd --zone=public --add-port=6379/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
重新载入
firewall-cmd --reload
[root@localhost /]# firewall-cmd --query-port=6379/tcp
yes
[root@localhost /]#
然后重启 redis服务
# systemctl restart redis
查看 master 配置情况 192.168.172.11
[root@localhost /]# redis-cli -a pwd@123 info replication
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.172.21,port=6379,state=online,offset=1358,lag=0
master_replid:eee4338de9fd2200fb5b50eae7c4c7302bd84911
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1358
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1358
[root@localhost /]#
查看 slave 配置情况 192.168.172.21
[root@localhost ~]# redis-cli -a pwd@123 info replication
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Replication
role:slave
master_host:192.168.172.11
master_port:6379
master_link_status:up
master_last_io_seconds_ago:10
master_sync_in_progress:0
slave_repl_offset:1596
slave_priority:101
slave_read_only:1
connected_slaves:0
master_replid:eee4338de9fd2200fb5b50eae7c4c7302bd84911
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1596
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:953
repl_backlog_histlen:644
[root@localhost ~]#
开启多个实例化 slave 服务
如图分别创建各个文件
[root@localhost /]# tree /opt/redis/
/opt/redis/
├── redis-5.0.7
│ ├── bin
│ │ ├── redis-benchmark
│ │ ├── redis-check-aof
│ │ ├── redis-check-rdb
│ │ ├── redis-cli
│ │ ├── redis-sentinel -> redis-server
│ │ └── redis-server
│ ├── conf
│ │ ├── redis.conf
│ │ └── redis.conf~
│ ├── logs
│ │ └── redis_6379.log
│ └── redis_6379.pid
├── redis_6380
│ └── redis_6380.conf
└── redis_6381
└── redis_6381.conf
6 directories, 12 files
复制一份 slave 服务器的redis.conf文件修改对应的端口号
修改对应的 如: port 6380
# 测试环境注释掉本地绑定IP,正式环境要绑定自己的服务器IP
# bind 127.0.0.1
port 6380
daemonize yes
pidfile "/opt/redis/redis_6380/redis_6380.pid"
logfile "/opt/redis/redis-5.0.7/logs/redis_6380.log"
# 绑定master IP 端口
replicaof 192.168.172.11 6379
# master 应答密码
requirepass "pwd@123"
# slave 请求密码 考虑的哨兵集群 这里先添加上
masterauth "pwd@123"
# 多个slave 的 replica-priority 最好不要设定成一样的 容易引起哨兵报错
replica-priority 102
maxclients 10000
maxmemory 256mb
maxmemory-policy volatile-lru
然后启动 6380的redis服务,
# redis-server /opt/redis/redis_6380/redis_6380.conf
# redis-server /opt/redis/redis_6381/redis_6381.conf
注意6380和6381端口是否开启
[root@localhost /]# ps aux|grep redis
root 1074 0.1 0.7 156456 7856 ? Ssl 13:57 0:02 /opt/redis/redis-5.0.7/bin/redis-server *:6379
root 1640 0.0 0.7 153896 7724 ? Ssl 14:32 0:00 redis-server *:6380
root 1646 0.0 0.7 156456 7864 ? Ssl 14:33 0:00 redis-server *:6381
root 1652 0.0 0.0 112732 968 pts/0 S+ 14:33 0:00 grep --color=auto redis
[root@localhost /]#
查看 所有的 slave 已经加载上了
[root@localhost /]# redis-cli -a pwd@123 info replication
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Replication
role:master
connected_slaves:3
slave0:ip=192.168.172.21,port=6379,state=online,offset=3220,lag=0
slave1:ip=192.168.172.11,port=6381,state=online,offset=3220,lag=0
slave2:ip=192.168.172.11,port=6380,state=online,offset=3220,lag=0
master_replid:eee4338de9fd2200fb5b50eae7c4c7302bd84911
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:3220
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:3220
[root@localhost /]#