1、持久化保证了即使redis服务重启也不会丢失数据,因为redis服务重启后会将硬盘上持久化的数据恢复到内存中,但是当redis服务器的硬盘损坏了可能会导致数据丢失,如果通过redis的主从复制机制就可以避免这种单点故障,如下图

 

2、 说明:

  1. 主redis中的数据有两个副本(replication)即从redis1和从redis2,即使一台redis服务器宕机其它两台redis服务也可以继续提供服务。
  2. 主redis中的数据和从redis上的数据保持实时同步,当主redis写入数据时通过主从复制机制会复制到两个从redis服务上。
  3. 只有一个主redis,可以有多个从redis。
  4. 主从复制不会阻塞master,在同步数据时,master 可以继续处理client 请求

3、主节点的配置

无需特殊配置,保持和之前的单机配置方式。

       从redis配置

  • :复制出一个从机

[root@bruce1 myapps]# cp redis/ redis1 -r

[root@bruce1 myapps]# ll

总用量 40

drwxr-xr-x. 3 root root  4096 7月   1 09:26 redis

drwxr-xr-x. 3 root root  4096 7月   1 09:27 redis1

drwxr-xr-x. 9 root root  4096 6月  28 23:26 tomcat

 

  • :修改从机的redis.conf

语法:slaveof <masterip> <masterport>

 

  • :修改从机的port地址为6380

在从机redis.conf中修改

 

  • :清除从机中的持久化文件

[root@bruce1 bin]# rm -rf appendonly.aof dump.rdb

[root@bruce1 bin]# ll

总用量 15440

-rwxr-xr-x. 1 root root 4588902 7月   1 09:27 redis-benchmark

-rwxr-xr-x. 1 root root   22225 7月   1 09:27 redis-check-aof

-rwxr-xr-x. 1 root root   45443 7月   1 09:27 redis-check-dump

-rwxr-xr-x. 1 root root 4691809 7月   1 09:27 redis-cli

lrwxrwxrwx. 1 root root      12 7月   1 09:27 redis-sentinel -> redis-server

-rwxr-xr-x. 1 root root 6450337 7月   1 09:27 redis-server

 

  • :启动从机

         [root@bruce1 redis1]# ./bin/redis-server ./redis.conf

  • :启动6380的客户端

[root@bruce1 redis1]# ./bin/redis-cli -p 6380

127.0.0.1:6380> keys *

1) "mylist"

2) "num"

3) "bookCate1"

4) "newbook"

5) "company"

127.0.0.1:6380>

  • 主机一旦发生增删改操作,那么从机会将数据同步到从机中
  • 从机不能执行写操作

127.0.0.1:6380> get username

"hehe"

127.0.0.1:6380> set username haha

(error) READONLY You can't write against a read only slave.