redis主从同步、数据持久化及数据类型

3 篇文章 0 订阅

注:续上一篇博客《redis的安装及lnmp+redis配置》
一、redis主从同步
在这里插入图片描述
在这里插入图片描述
1、配置主从同步(配置52为51的从库)
(1)命令行配置模式,立即生效(重启redis后失效)

192.168.8.52:6352> SLAVEOF 192.168.8.51 6351		//设置为从库时,主库数据会覆盖从库数据
OK
192.168.8.52:6352> info replication		//查看数据库角色
# Replication
role:slave
master_host:192.168.8.51
master_port:6351
master_link_status:up		//状态为up表示配置成功
master_last_io_seconds_ago:5
master_sync_in_progress:0
slave_repl_offset:0
slave_priority:100
slave_read_only:1
connected_slaves:0
...
192.168.8.52:6352> SLAVEOF no one		//将从库变为主库
OK

(2)通过客户端(50)主机登录主库(51)写入数据,查看同步情况

192.168.8.51:6351> info replication		//查看主库的从库连接状态
# Replication
role:master
connected_slaves:1		//显示连接了1个从库
slave0:ip=192.168.8.52,port=6352,state=online,offset=1553,lag=0
master_replid:efb4df32479f84002565ae774ea3df543979b984
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1567
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1567
192.168.8.51:6351> keys *
1) "name"
192.168.8.51:6351> get name
"bob"
192.168.8.51:6351> set sex girl		//写入数据
OK
192.168.8.51:6351> keys *
1) "sex"
2) "name"
192.168.8.51:6351> exit
[root@host50 ~]# redis-cli -h 192.168.8.52 -p 6352		//登录从库
192.168.8.52:6352> keys *		//数据同步成功
1) "name"
2) "sex"
192.168.8.52:6352> get name
"bob"
192.168.8.52:6352> set age 23		//从库只能读,不能写
(error) READONLY You can't write against a read only slave.

(3)通过修改配置文件指定主库,永久生效

[root@host52 ~]# redis-cli -h 192.168.8.52 -p 6352 shutdown
[root@host52 ~]# vim /etc/redis/6379.conf 
282 slaveof 192.168.8.51 6351		//指定51为主库
[root@host52 ~]# /etc/init.d/redis_6379 start
Starting Redis server...
[root@host52 ~]# redis-cli -h 192.168.8.52 -p 6352 
192.168.8.52:6352> info replication
# Replication
role:slave		//角色为slave
master_host:192.168.8.51
master_port:6351
master_link_status:up		//状显示为up
...

(4)有验证的主从配置
配置主库,指定登录密码

[root@host51 ~]# vim /etc/redis/6379.conf
501 requirepass 123456		//设置请求连接密码
[root@host51 ~]# vim /etc/init.d/redis_6379		//设置启动脚本,以便用脚本开关redis
43             $CLIEXEC -h 192.168.8.51 -p 6351 -a 123456 shutdown
[root@host51 ~]# /etc/init.d/redis_6379 start
Starting Redis server...

配置从库,指定连接主库的密码

[root@host52 ~]# vim /etc/redis/6379.conf
282 slaveof 192.168.8.51 6351
289 masterauth "123456		//设置连接主库的密码
[root@host52 ~]# vim /etc/init.d/redis_6379		//修改启动脚本
43             $CLIEXEC -h 192.168.8.52 -p 6352  shutdown
[root@host52 ~]# /etc/init.d/redis_6379 start
Starting Redis server...

验证主从

[root@host51 ~]# redis-cli -h 192.168.8.51 -p 6351 -a 123456
192.168.8.51:6351> info replication
# Replication
role:master
connected_slaves:1
...
--------------------------------------------------------------------------
[root@host52 ~]# redis-cli -h 192.168.8.52 -p 6352
192.168.8.52:6352> info replication
# Replication
role:slave
master_host:192.168.8.51
master_port:6351
master_link_status:up
...

(5)配置一主多从(51为主,52、53为从)

[root@host53 ~]# vim /etc/redis/6379.conf
282 slaveof 192.168.8.51 6351
289 masterauth "123456		//设置连接主库的密码
[root@host53 ~]# vim /etc/init.d/redis_6379		//修改启动脚本
43             $CLIEXEC -h 192.168.8.53 -p 6353  shutdown
[root@host53 ~]# /etc/init.d/redis_6379 start
Starting Redis server...

(6)配置主从从(51为主,53为51的从,54为53的从)

[root@host54 ~]# vim /etc/redis/6379.conf
282 slaveof 192.168.8.53 6353
[root@host54 ~]# vim /etc/init.d/redis_6379		//修改启动脚本
43             $CLIEXEC -h 192.168.8.54 -p 6354  shutdown
[root@host54 ~]# /etc/init.d/redis_6379 start
Starting Redis server...

(7)哨兵模式

  • 哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。
  • 哨兵有两个作用
    a.通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。
    b.当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机
  • 一个哨兵进程对Redis服务器进行监控,可能会出现问题,为此,我们可以使用多个哨兵进行监控。各个哨兵之间还会进行监控,这样就形成了多哨兵模式

这里以53配置哨兵模式为例,即53主机承担从库和哨兵的双重角色

  • 创建哨兵服务的主配置文件
[root@host53 ~]# vim /etc/sentinel.conf
bind 0.0.0.0		//设置redis服务器可以跨网络与其他主机通信
sentinel monitor ser51 192.168.8.51 6351	1	//配置哨兵监视51主机,只要有1个哨兵发现主库故障,则从从库中选举主库
sentinel auth-pass ser51 123456		//主库设置连接密码后需要配置该选项
  • 启动哨兵服务
[root@host53 ~]# redis-sentinel /etc/sentinel.conf
...
14818:X 03 May 21:40:54.511 # +monitor master ser51 192.168.8.51 6351 quorum 1		//监视的主库
14818:X 03 May 21:40:54.512 * +slave slave 192.168.8.53:6353 192.168.8.53 6353 @ ser51 192.168.8.51 6351		//监视的从库1
14818:X 03 May 21:47:45.881 * +slave slave 192.168.8.52:6352 192.168.8.52 6352 @ ser51 192.168.8.51 6351		//监视的从库2
...
  • 测试哨兵模式
[root@host51 ~]# /etc/init.d/redis_6379 stop		//关闭主库51主机的redis服务
Stopping ...
Redis stopped
[root@host53 ~]# redis-sentinel /etc/sentinel.conf
...
14818:X 03 May 21:51:43.072 # +switch-master ser51 192.168.8.51 6351 192.168.8.53 6353		//主库切换为53主机
14818:X 03 May 21:51:43.072 * +slave slave 192.168.8.52:6352 192.168.8.52 6352 @ ser51 192.168.8.53 6353
...

2、redis持久化之RDB
在这里插入图片描述
相关配置参数
在这里插入图片描述
在这里插入图片描述
恢复数据(数据库存储的数据文件/var/lib/redis/6379/dump.rdb)
在这里插入图片描述
在这里插入图片描述
3、redis持久化之AOF
在这里插入图片描述
相关配置参数
在这里插入图片描述
注:以上AOF
文件记录写操作的前两个方式在记录命令至内存同时,会将数据同步写入硬盘,第三种方式只记录在内存文件appendonly.aof中在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 写操作数据记录文件:/var/lib/redis/6379/appendonly.aof,一般情况下不要修改该文件,以免数据丢失
  • RDB和AOF同时开启时,优先加载appendonly.aof文件
  • 生产环境中,一般同时开启AOF和RDB,若redis服务器中途需要开启AOF,为避免RDB记录的数据被覆盖,应在redis登录状态下配置启用AOF
    (1)通过修改配置文件启用AOF
[root@host50 ~]# vim /etc/redis/6379.conf
673 appendonly yes		//启用AOF
677 appendfilename "appendonly.aof"
[root@host50 6379]# /etc/init.d/redis_6379 start
Starting Redis server...
[root@host50 6379]# ls
appendonly.aof  dump.rdb

(2)在登录状态下启用AOF

[root@host50 6379]# redis-cli -h 192.168.8.50 -p 6350 -a 123456
192.168.8.50:6350> CONFIG SET appendonly yes		//配置启用AOF
OK
192.168.8.50:6350> CONFIG REWRITE		//将配置写入配置文件
OK
192.168.8.50:6350> exit
[root@host50 6379]# !ls
ls /var/lib/redis/6379/
appendonly.aof  dump.rdb

4、redis数据类型

  • string字符串
    在这里插入图片描述
    在这里插入图片描述 在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

  • list列表:字符队列,一个key可以存放多个值,先进后出
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • hash表
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值