解析我做redis主从遇到的问题:

redis只要下载好压缩包后解压缩然后make就可以直接使用了,启动服务是:

/usr/local/src/redis/src/redis-server

然后进入交互界面是:

/usr/lcoal/src/redis/src/reids-cli

假如没有更改port那么默认监听6379端口,如果改了,登录时务必在后面-p  端口号。才能登录。

然后如果更改了redis.conf文件那么启动时:

/usr/local/src/redis/src/redis-server  /usr/local/src/redis/redis.conf

这样才能出发配置。


接下来开始配置主从:

1、修改主redis的配置文件:

daemonize yes
bind 127.0.0.1    ###要么把这句屏蔽掉,要么后面的ip改为自己的,但是登录时又要-h加上IP地址。
protected-mode no    ##要么改为no,要么就添加认证,那么在登录时就要先验证才能登陆。

2、修改从redis的配置文件:

daemonize yes
port 6380    ##改变下端口
logfile "/usr/local/src/redis.log"    ##redis默认是不记录日志的,这里写一个日志的路径,好排错。
slaveof 192.168.40.12 6379   ##设置为40.12的从redis。


然后两台服务器都启动:

[root@centosa ~]# /usr/local/src/redis-3.2.1/src/redis-server /usr/local/src/redis-3.2.1/redis.conf
[root@centosb redis-3.2.1]# /usr/local/src/redis-3.2.1/src/redis-server /usr/local/src/redis-3.2.1/redis.conf



登录然后测试一下同步:

[root@centosa ~]# /usr/local/src/redis-3.2.1/src/redis-cli 
127.0.0.1:6379> set test 123
OK
127.0.0.1:6379> get test
"123"
[root@centosb redis-3.2.1]# /usr/local/src/redis-3.2.1/src/redis-cli -p 6380
127.0.0.1:6380> get test
"123"


如果出现错误可以查看一下日志:/usr/lcoal/src/redis.log


如果要设置验证,在配置文件中修改一下:

requirepass redhat     ##取消这一句的注释,然后后面改为自己的密码。
重新启动。
但是下次登录时,什么也做不了,要么:
auth   redhat  ##登录后先输入一句,验证。


或者是在登录时加上-a  redhat   这样就可以了。




持久化:

    rdb:

配置文件默认开启:

save 900 1
save 300 10
save 60 10000

会在安装目录下生成一个dump.rdb文件,这就是保存着缓存数据的文件。

rdb适合恢复大规模数据,但是恢复数据的完整性不高。


aof(默认不开启):

修改配置文件:
appendonly yes
appendfsync everysec    ##每秒写入一次。



主从切换:


停止主的服务。

然后在从操作:

127.0.0.1:6380> slaveof no one
127.0.0.1:6380> info replication
# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
127.0.0.1:6380> set name lsf
OK
127.0.0.1:6380> set host redhat
OK
127.0.0.1:6380> 
127.0.0.1:6380> save
OK

然后把dump.rdb复制到原来的主redis:

[root@centosb redis-3.2.1]# scp dump.rdb centosa:/usr/local/src/redis-3.2.1/
dump.rdb

 


启动原来的主服务器:

[root@centosa redis-3.2.1]# /usr/local/src/redis-3.2.1/src/redis-server /usr/local/src/redis-3.2.1/redis.conf

然后看一下keys;

[root@centosa redis-3.2.1]# /usr/local/src/redis-3.2.1/src/redis-cli 
127.0.0.1:6379> 
127.0.0.1:6379> keys *
1) "mylist"
2) "host"
3) "name"
127.0.0.1:6379> get name
"lsf"
127.0.0.1:6379> get host
"redhat"


再把现在的主切换成从,原来的主恢复主的身份:

127.0.0.1:6380> slaveof 192.168.40.12 6379
OK
127.0.0.1:6380> info replication
# Replication
role:slave
master_host:192.168.40.12
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:15
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0


查看一下主的状态:

127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.40.19,port=6380,state=online,offset=365,lag=0
master_repl_offset:365
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:364