大多数的应用场景是MySQL(主)+Redis(辅),MySQL做为主存储,Redis用于缓存,
加快访问速度。需要高性能的地方使用Redis,不需要高性能的地方使用MySQL。存储
数据在MySQL和Redis之间做同步;
server1 ,server2,server3必须先实现主从复制
Server1(master):
[root@server1 ~]# tar zxf redis-4.0.8.tar.gz
[root@server1 ~]# cd redis-4.0.8
[root@server1 redis-4.0.8]# yum install gcc -y
[root@server1 redis-4.0.8]# make
[root@server1 redis-4.0.8]# make install
[root@server1 edis-4.0.8]# which redis-cli
/usr/local/bin/redis-cli
[root@server1 utils]# cd utils/
[root@server1 utils]# ./install_server.sh
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful!
[root@server1 utils]# netstat -antlp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 31887/redis-server
[root@server1 redis]# vim /etc/redis/6379.conf
70 bind 0.0.0.0
[root@server1 redis]# /etc/init.d/redis_6379 stop
Stopping ...
Redis stopped
[root@server1 redis]# /etc/init.d/redis_6379 start
Starting Redis server...
[root@server1 redis]# netstat -antlp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 31901/redis-server
[root@server1 redis]# redis-cli
127.0.0.1:6379> set name wzt
OK
127.0.0.1:6379> get name
"wzt"
127.0.0.1:6379> set user1 111
OK
127.0.0.1:6379> get key
(nil)
127.0.0.1:6379> get user1
"111"
Server2(slave):
[root@server2 ~]# tar zxf redis-4.0.8.tar.gz
[root@server2 ~]# cd redis-4.0.8
[root@server2 redis-4.0.8]# yum install gcc -y
[root@server2 redis-4.0.8]# make
[root@server2 redis-4.0.8]# make install
[root@server2 edis-4.0.8]# which redis-cli
/usr/local/bin/redis-cli
[root@server2 utils]# cd utils/
[root@server2 utils]# ./install_server.sh
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful!
[root@server2 utils]# netstat -antlp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 31887/redis-server
[root@server2 redis]# vim /etc/redis/6379.conf
70 bind 0.0.0.0
283 slaveof 172.25.44.1 6379
[root@server2 utils]# /etc/init.d/redis_6379 restart
Stopping ...
Redis stopped
Starting Redis server...
[root@server2 utils]# redis-cli #可以同步到server1上的数据
127.0.0.1:6379> get name
"wzt"
127.0.0.1:6379> get user1
"111"
Server3(slave);
同server2
#
#检测三台主机是否同步
[root@server2 utils]# redis-cli
127.0.0.1:6379> get name
"westos"
127.0.0.1:6379> exit
[root@server3 utils]# redis-cli
127.0.0.1:6379> get name
"westos"
127.0.0.1:6379> exit
#主从自动切换
[root@server1 redis]# vim /etc/redis/sentinel.conf
15 bind 0.0.0.0
17 protected-mode no
69 sentinel monitor mymaster 172.25.44.1 6379 2
#注意:千万不能重启
[root@server1 redis]# scp /etc/redis/sentinel.conf server3:/etc/redis/
sentinel.conf 100% 7588 7.4KB/s 00:00
[root@server1 redis]# scp /etc/redis/sentinel.conf server2:/etc/redis/
sentinel.conf 100% 7588 7.4KB/s 00:00
[root@server1 redis-4.0.8]# redis-server /etc/redis/sentinel.conf --sentinel
32244:X 11 Aug 18:21:20.565 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
32244:X 11 Aug 18:21:20.566 # Redis version=4.0.8, bits=64, commit=00000000, modified=0, pid=32244, just started
32244:X 11 Aug 18:21:20.566 # Configuration loaded
32244:X 11 Aug 18:21:20.566 * Increased maximum number of open files to 10032 (it was originally set to 1024).
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 4.0.8 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in sentinel mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 26379
| `-._ `._ / _.-' | PID: 32244
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
32244:X 11 Aug 18:21:20.567 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
32244:X 11 Aug 18:21:20.623 # Sentinel ID is 99043549949de0b7dc7824eedb163987230986f0
32244:X 11 Aug 18:21:20.623 # +monitor master mymaster 172.25.44.1 6379 quorum 2
32244:X 11 Aug 18:21:20.624 * +slave slave 172.25.44.3:6379 172.25.44.3 6379 @ mymaster 172.25.44.1 6379
32244:X 11 Aug 18:21:20.649 * +slave slave 172.25.44.2:6379 172.25.44.2 6379 @ mymaster 172.25.44.1 6379
[root@server1 redis]# /etc/init.d/redis_6379 stop
Stopping ...
Redis stopped
6726:X 11 Aug 18:21:43.907 * +sentinel sentinel 99043549949de0b7dc7824eedb163987230986f0 172.25.44.1 26379 @ mymaster 172.25.44.1 6379
6726:X 11 Aug 18:21:52.431 * +sentinel sentinel 61c1d7df1086ff31029a47c00969d1712081e8ac 172.25.44.3 26379 @ mymaster 172.25.44.1 6379
6726:X 11 Aug 18:22:43.471 # +sdown master mymaster 172.25.44.1 6379
6726:X 11 Aug 18:22:43.524 # +odown master mymaster 172.25.44.1 6379 #quorum 3/2
6726:X 11 Aug 18:22:43.524 # +new-epoch 1
[root@server1 redis]# vim /etc/redis/6379.conf #配置文件的master已经改变
1310 slaveof 172.25.44.2 6379
[root@server1 redis]# /etc/init.d/redis_6379 start
Starting Redis server...
6726:X 11 Aug 18:22:45.428 * +slave slave 172.25.44.3:6379 172.25.44.3 6379 @ mymaster 172.25.44.2 6379
6726:X 11 Aug 18:22:45.428 * +slave slave 172.25.44.1:6379 172.25.44.1 6379 @ mymaster 172.25.44.2 6379