Linux数据库管理——day13——Redis的主从同步、数据格式

主从同步

    原理:从库向主库发送同步请求(sync),接收到后启动一个程序进行后台存储,然后把保存的rdb文件发给从库,然后从库读取文件实现同步,之后主库每进行一次写操作就会启动一个程序,把修改命令发给从库,实现实时同步

    配置:
       所有库都默认拥有主库的配置,所以配置主从只需要从库进行配置即可
       查看当前状态(role:后面写的就是主库或者从库    master_link_status:代表连接状态)

info replication

       从库配置

slaveof 主库IP 端口
# 如果主库设置量登陆密码,那就需要指定密码
config set masterauth 密码

       取消从库

slaveof no one

       永久设置(修改配置文件)

sed -i '/slaveof </cslaveof 192.168.4.51 6351' /etc/redis/6379.conf 
# 如果主库设置了登陆密码
sed -i '/masterauth/cmasterauth 密码' /etc/redis/6379.conf 

    优点: 主从同步可以对数据进行备份,是负载均衡高可用的基础服务

    缺点: 当网络繁忙或者系统繁忙的时候,数据同步有延时

    安全检测(高可用):
       哨兵模式,用于检测主库健康性的系统,当发现主库出现问题,立刻让一个从库成为主库,继续服务
       搭建过程: 装包、配置、启服务
          装包: 安装redis软件中就有
          配置: 编写配置文件,可以放在任意位置,只要自己清楚即可

sentinel monitor 自定义的哨兵名  监听的主库IP号 主库端口号 票数
sentinel auth-pass 哨兵名 登陆主库的密码(没有密码的话不要这一行)

          解释:
              1. 票数 , 这指的是,多个哨兵的时候,当有几个哨兵服务器发现服务器有问题,就切换主库,如果值有一个哨兵,那就只能写1了
              2. 哨兵切换主库后,也会自动修改这个配置文件,并继续监听
              3. 票数设置方面,满足两个条件最佳,票数尽量不要为一、票数不要和哨兵服务器一样
                  如果有多个服务器,最好是 票数 = 哨兵服务器数 - 1,防止某个哨兵出现为题
          启动服务: 

redis-sentinel  编写的配置文件位置

数据备份—RDB/AOF

RDB
    简介,全称 Redis DataBase 是redis数据库默认启动的备份方式,其工作原理和快照,按照一定时间间隔或者指定命令,把内存中的数据全部存入磁盘中
    配置:在配置文件 /etc/redis/6379.conf 中,默认开启,其中行首为save的配置都是相关项

save ""# 禁用RBD,默认被注释了
save 900 1# 每隔900s的时间内,并且有1隔数据就该就进行备份
save 300 10# 每隔300s的时间内,并且有10隔数据就该就进行备份
save 60 10000# 每隔60s的时间内,并且有10000隔数据就该就进行备份
dbfilename "dump.rdb"# 指定存储文件名为dump.rdb,可以修改
rdbcompression yes# 是否开启压缩
rdbchecksum yes# 存储快照后进行一次数据校验
stop-writes-on-bgsave-error yes# 当bgsave出错的时候停止写操作

   具体解释: 主要解释save,配置文件中有多行关于save时间间隔的配置,其主要用法是,从开启服务开始,每隔指定秒数,检查这端时间内也没有达到指定的修改文件的个数,如果够了就备份,如果没够就重新计时和计数,举例就是,save 60 10000,每隔60s查看一些这1分钟内也没有达到10000个修改,如果够了那就备份然后重新计时,如果没够就重新然后重新计时,并且清空之前的计数

   手动存盘:
      save 指存盘时候不能写操作
      bgsave 指存盘的时候可以同时进行写操作

   优点: 适合大规模数据的时候备份恢复,
   缺点: 意外down机的时候丢失数据较多

AOF

   简介,全称 Append Only File 只做追加操作,记录redis的全部写操作,不断把写操作追加到文件末尾

   开启aof的操作:

# 修改配置文件中如下内容,把no改为yes
appendonly no
appendfilename "appendonly.aof"
# 命令执行结果如下
sed -i '/appendonly /cappendonly yes' /etc/redis/6379.conf 

   设定AOF文件记录写操作的频率:

appendfsync always    # 指代每有一个写操作就将其记录到内存(极其占用资源)
appendfsync everysec    # 指代每秒钟记录一次(默认的记录频率)
appendfsync no        # 指代当系统每隔一段时间将内存写入磁盘的时候,写入磁盘(极高丢失率)

   修复AOF: 在命令行中执行修复命令

redis-check-aof --fix AOF文件

   优点: 在意外down机的时候丢失数据很少,最多只有1秒的数据

   缺点: 存储文件往往很大,而且备份速度慢

两种数据备份:
    1. 进行数据的备份存储都是保存一个文件在/var/lib/redis/6379/下,文件名都是配置文件中自定义的
    2. 如果需要备份到其他地方,把存储文件复制保存即可,恢复的时候,把备份的文件拷贝到指定位置,并命名为指定的文件名即可
    3. 在两个备份都开启的时候,启动数据库,默认读取AOF备份文件


数据类型

String字符串类型

    默认所有设置的数据都是String类型
    要注意这下面命令中,所有位置都是从0开始计数,而负数代表从后往前数,-1代表最后一个
    下面所有用的例子中的 example 变量值为123456

创建或修改一个String类型的变量set 变量 值 [ex 秒 px毫秒 nx|xx]
参数ex是定义变量的有效时间,单位是秒
参数px是定义变量的有效时间,单位是毫秒
参数nx指,该set命令只能进行创建,如果命令中变量存在,命令就会报错
参数xx指,该set命令只能进行修改,如果命令中变量不存在,命令就会报错
修改某字符串的部分字符setrange  变量 从第几位开始 替换成的字符
setrange example 3 **   --> example值为 123**6
统计字符长度strlen 变量
追加写入append 变量 值
append exmaple 789  -->  example值为 123456789
计数存储数据setbit 变量 位置 值
这是特殊的一个计数方式,位置是0-2^32内的数字,一般是从小到大依次存储
值只能是0或者1
命令的意思就是,变量按照一个位置一个值,最后把变量中所有位置中值为1的个数计算出来,达到计数的目的
计数存储读取bitcount变量
从变量中的指定位置截取字段getrange 变量 开始位置 结束位置
getrange example 0 -1  -->  返回值 123456
getrange example 2 3  -->  返回值 3
getrange example 1 7  -->  返回值 23456
getrange example 7 1  -->  返回值为空 ""
同时存储多个值mset 变量1 值1 变量2 值2 变量3 值3
同时读取多个值mget 变量1 变量2 变量3
变量值自减一decr 变量
如果变量中值有数字,那可以进行自减一的操作,有一个非数字字符都不能进行加减运算
变量值减去指定数值decrby 变量 减少的值
变量值自加一incr 变量
变量值加上指定数值incrby 变量 减少的值
变量值加上一个小数incrbyfloat 变量 小数
注意,不能减少某个小数,命令不支持


list列表存储
    
      存储算法是堆栈,其存数据的读取是先进后出

创建一个列表lpush 列表名 值1 值2 值3
存进去后,值3是第一个值,值1是最后一个值
读取一个列别lrange 列表名 开始位置 终止位置
输出并删除表头数据lpop 列表
表头数据就是读取的第一个数据,也就是最后一个存进去的数据
统计列表中值的个数llen 列表
输出列表中指定位置的值lindex 列表 位置
lindex 列表 0   输出列表中的第一个值,和lpop不同,这只输出,不删除
lindex 列表 -1   输出列表中的最后一个值
修改指定位置的只lset 列表 位置 值
lset 列表 0 123 把表的第一个值修改为123
把指定值插入到最后一个后面rpush 列表 值1 值2
lpush example 1 2 3 4
lrange example 0 -1  --> 返回值为 4 3 2 1
rpush example 5 6
lrange example 0 -1  --> 返回值为 4 3 2 1 5 6
输出并删除最后的值rpush 列表

hash列表
    最大的特点就是 节省空间
    存储原理: 在一个变量有可以有多个字段,每个字段可以存储一个值
                区别于list列表,hash存储没有顺序只分,只是根据字段进行分类存储

创建哈希表hset 变量 字段 值
如果变量存在,那这命令就是给变量添加一个字段并赋值
获取哈希值hget 变量 字段
存储多个字段hmset 变量 字段1 值1 字段2 值2 字段3 值3
获取多个字段的哈希值hmget 变量 字段1 字段2 字段3
获取变量中所有字段名hkeys 变量
获取变量中所有字段名和字段值hgetall 变量
获取变量中所有字段值hvals 变量
删除某个字段hdel 变量 字段
删除变量del 变量
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值