当前位置: 首页 > article >正文

redis的高可用

1.redis的高可用

在集群当中有一个非常重要的指标,提供正常服务的时间的百分比(365天)99%

redis的高可用含义更宽泛,正常服务是指标之一,数据容量的扩展,数据的安全性。

在redis中实现高可用技术:持久化,主从复制,哨兵模式,cluster集群

持久化:持久化是最简单的高可用方法,主要作用是数据备份,也就是把redis缓存在内存中的数据保存到本地的硬盘中。(冷备份)

2.redis持久化的两种方式

1.RDB持久化:reids在内存中的数据定时保存到磁盘。(自动执行,手动执行)

2.AOF持久化:redis的操作日志,以追加的方式写入AOF的文件,类似于mysql的binlog

3.RDB的持久化

指在指定的时间间隔内,将内存中当前进程中的数据生成快照保存到硬盘(快照持久化),用二进制压存储。保存的文件的后缀 .rdb。redis启动时,可以直接读取快照文件,实现数据恢复

3.1 RDB的触发机制

手动机制:save bgsave都可以生产RDB文件。

save创建RDB文件时,整个redis进程都会被阻塞,期间redis将无法进行读写操作,直到RDB文件创建完成为止。(生产中禁止用save)

BGSAVE:主进程会通过fork机制创建一个子进程,子进程的创建过程中,父进程会阻塞,子进程创建完毕,主进程解除阻塞,由子进程来创建RDB文件,创建完成之后,通知主进程更新通知信息。

3.2 手动机制save

终端

redis-cli -h 192.168.233.7 -p 6379

save

/etc/init.d/redis_6379 stop

cd /var/lib/redis/6379

ll

cp dump.rdb /opt/

/etc/init.d/redis_6379 start

flushall

exit

/etc/init.d/redis_6379 stop

cd /opt

cp dump.rdb /var/lib/redis/6379

3.2 手动机制bgsave

终端

bgsave

重开一个

tail -f /var/log/redis_6379.log

exit

/etc/init.d/redis_6379 stop

cd /vat/lib/redis/6379

ll

cp dump.rdb /opt/

/etc/init.d/redis_6379 start

flushall

exit

/etc/init.d/redis_6379 stop

cd /opt

cp dump.rdb /var/lib/redis/6379

4.AOF持久化

AOF持久化是将redis的每一次读 写 删除 命令记录到一个单纯的。aog为结尾的文件。查询操作由主进程记录,当reids重启时,再次执行AOF文件中的命令来恢复数据

4.1 持久化配置

vim /etc/redis/6379.conf

700行,开启AOF持久化功能

704 名称可以改,但是.aof不能动,否则系统无法识别

用于判断AOF文件,如果被截断时的行为

Yes:发现被截断(写入过程中出现异常,导致文件未能完全写入),Redis会尽可能的恢复文件中的数据,Redis会继续运行

No:发现AOF文件被截断,Redis将拒绝启动

数据完整性的要求高:no

注重数据服务器的可用性:yes

/etc/init.d/redis_6379 restart

vim /var/lib/redos/6379/appendonly.aof

删除不需要的步骤

4.2 AOF的重写功能

随着时间的增长,AOF文件当中的数据也会不断增加。AOF的文件也会越来越大。过大的AOF文件不仅仅会影响服务器的正常运行也会导致数据的恢复时间过长。

文件重写是指定期的重写AOF文件,减小AOF文件的体积。AOF重写是把redis进程内的数据,转化为写命令,同步到新的AOF文件当中(不会额外的生成一个新的文件,只是在原内容进行压缩),不会对原有的AOF文件进行任何读写的操作

4.3 AOF同步文件策略

vim /etc/redis/6379.conf

appendfsync always :写入过程中,立即调用redis系统的fsync操作写入到AOF文件,每次写入都执行同步,硬盘的性能有瓶颈,硬盘的寿命也会大大降低。

appendfsync no :写入操作调用系统的write操作,不对AOF文件进行同步,操作系统来同步,同步周期30秒,文件同步的时间不可控,缓冲区会堆积大量数据,数据的安全也无法保证、

appendsync everysec:调用write操作,write操作结束后,线程会返回。FSYNC同步文件操作由专门的线程,每秒调用一次,这是一个折中的策略,是性能和安全性的平衡,是redis的默认策略也是推荐配置。

4.4 重写的触发条件

1.手动触发

redis-cli bgrewriteaof

2.自动触发

vim .etc/redis/6379_conf

auto-aof-rewired-precentage 100

文件的大小查看基准的百分比,默认值就是100.文件的超过两倍时。执行bgrewriteadof.设置为0,禁用自动触发

auto-aof-rewite-min-size 64MB

文件大于基准面,才会进行重写,这个值是AFO文件执行重写的最小值。避免开始启动redis后,文件大小,然后频繁的进行重写。

4.5 AOF重写为什么能够压缩文件

1.重写的过程中,过期的数据不会写入文件

2.无效的命令不在写入文件,数据被重复设置 set test=1 set test=2 。删除的数据不会写入set test 1 del test

3.多条命令合并一个。sadd test1 v1 sadd test1 v2 sadd test1 v3 sadd test1 v1 v2 v3

重写之后,AOF的文件当中的命令减少了,空间也少了,恢复速度也增加了。(重写不是必须的)

5.RDB和AOF之间的优缺点

RDB的优点:文件体积小,网络传输速度很快,适合全量复制,恢复速度也比AOF要快。

缺点:做不到实时的持久化,数据如此重要,不能够容忍丢失的。另外RDB需要满足特定的格式,兼容性很差,老版本的RDB不支持新版本(redis的版本一定要一致)5.0.7

AOF的优点:秒级持久化,兼容性好。文本格式保存的命令。

缺点:文件大,恢复速度慢,AOF持久化需要频繁的向磁盘写数据,磁盘的IO压力也是很大的,对redis主进程的性能也会有一定影响。


http://www.kler.cn/a/137362.html

相关文章:

  • (六)循环神经网络_基本的RNN
  • css 编写注意-1-命名约定
  • Android--java实现手机亮度控制
  • 发际线不断后移,生发液排行榜第一名,让绒毛碎发爆出来
  • 【时间之外】IT人求职和创业应知【74】-运维机器人
  • 面向未来的教育技术:智能成绩管理系统的开发
  • 循环链表3
  • 数据类型扩展02
  • Java修仙记之记录一次与前端女修士论道的经历
  • 数据治理之springboot项目入门
  • 3.6 Windows驱动开发:内核进程汇编与反汇编
  • 安装和初步使用 nn-Meter
  • 通过AppLink把拼多多热门榜单商品同步至小红书
  • Python基础学习__测试报告
  • 单元测试实战(四)MyBatis-Plus 的测试
  • 人机交互复习专题
  • 【阿里云】图像识别
  • 猫罐头牌子哪个好一点?精选5款口碑好的猫罐头推荐!
  • 在Python中调用imageJ开发
  • 【算法基础】高精度运算
  • 虾皮网同行数据丨虾皮数据工具-知虾:监控竞争对手数据的利器
  • uniapp heckbox-group实现多选
  • postgresql 行转列的例子
  • 请收藏!2023年全栈开发人员实战进阶指南终极版
  • 去除IDEA中代码的波浪线(黄色警示线)
  • 构建和应用卡尔曼滤波器 (KF)--扩展卡尔曼滤波器 (EKF)