redis技术点

1、SAVE和BGSAVE的区别
    SAVE 直接调用 rdbSave ,阻塞 Redis 主进程,直到保存完成为止。在主进程阻塞期间,服务器不能处理客户端的任何请求。
    BGSAVE 则 fork 出一个子进程,子进程负责调用 rdbSave ,并在保存完成之后向主进程发送信号,通知保存已完成。 Redis 服务器在BGSAVE 执行期间仍然可以继续处理客户端的请求。

2、redis主从复制原理
    当建立一个从服务器后,从服务器会想主服务器发送一个SYNC的命令,主服务器接收到SYNC命令之后会执行BGSAVE
    然后保存到RDB文件,然后发送到从服务器!收到RDB文件然后就载入到内存!

3、RDB缓存原理
    redis通过fork()产生一个子进程,
    子进程将数据写入临时的RDB文件中(目录在dir),
    当子进程完成对新RDB文件的写入时,用临时RDB文件替换原来的RDB文件,并删除旧的RDB文件。
    这样在任何时候出现故障,Redis的RDB文件都总是可用的。
    注意:每次写操作都是将整体的数据写入到磁盘一份,这样数据量大的话,回引起大量的磁盘io操作,会影响性能

4、AOF写入
    AOF文件是一个只进行追加的日志文件,这样数据会越来越大,针对这种情况redis推出了bgrewriteaof机制

5、bgrewriteaof机制
    bgrewriteaof机制不是对整个文件进行压缩,而是对当前数据执行遍历操作,将当前所有数据都生成一条写入日志

6、AOF重写原理
    redis通过fork()产生一个子进程,
    子进程将新的AOF文件写入到临时文件中,
    父子进程是并行执行的,父进程在接受到新的写入命令,将写命令追加到现有的AOF文件中,同时将写命令追加到AOF重写缓存中
    子进程完成重写工作后,通知父进程,父进程接收到完成信号后,将AOF重写缓存中的内容追加到新AOF文件的末尾。
    原子性的用新AOF替换旧AOF

7、AOF重写问题
    当AOF重写和AOF写入同时进行的时候,会涉及到大量的磁盘io操作,这样会造成父进程在进行AOF写入的时候会出现阻塞,这是采用no-appendfsync-on-rewrite配置
    参数设置为no,是安全的方式,需要忍受阻塞
    设置为yes,如果这个时候redis出现故障,会造成数据的丢失,在linux系统默认设置下,最多会丢失30s的数据
8、cluster只有一个数据库    DB0


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值