美文网首页
5.redis相关

5.redis相关

作者: Junma_c631 | 来源:发表于2020-10-30 14:41 被阅读0次

    参考外部博文

    一、Redis入坟
    https://www.jianshu.com/p/583d105cd2a5
    二、Redis入坟(二)高级特性,发布订阅、事务、Lua脚本
    https://www.jianshu.com/p/0070033af93a
    三、Redis入坟(三)Redis为什么这么快?
    https://www.jianshu.com/p/9866165b2384
    四、Redis入坟(四)Redis内存回收知多少
    https://www.jianshu.com/p/8a34d1594046
    五、Redis入坟(六)分布式集群,概念、原理、实操
    https://www.jianshu.com/p/199255aa7bf1
    六、Redis入坟(八)内存管理与优化,面试必考
    https://www.jianshu.com/p/d39f087850c9
    七、Redis入坟(番外篇)配置文件redis.conf,解析每个参数的含义
    https://www.jianshu.com/p/564c6cbd1cbc

    一、redis持久化机制

    https://www.cnblogs.com/xingzc/p/5988080.html

    二、redis api相关操作

    https://www.jianshu.com/p/a21ea6828249

    三、缓存穿透及布隆过滤器

    https://www.jianshu.com/p/60b036355523

    四、缓存雪崩、集群搭建

    https://www.jianshu.com/p/436537e0f1bb

    五、redis实现分布式锁

    https://www.jianshu.com/p/71e066a3a456

    RDB持久化

    1.手动触发
    save命令:主线程处理持久化,会阻塞client端发出的命令。
    bgsave命令:主线程fork一个子线程处理持久化,主线程继续处理client请求,主线程不阻塞。
    2.自动触发RDB持久化 ,配置redis.conf

    save 900 1 #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。
    save 300 10 #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照。
    save 60 10000 #在60秒(1分钟)之后,如果至少有10000个key发生变化,则dump内存快照。
    

    具体持久化流程

    1). Redis先fork子进程。
    2). 子进程将快照数据写入到临时RDB文件中。
    3). 当子进程完成数据写入操作后,再用临时文件替换老的文件。
    

    AOF持久化 redis.conf配置

    # 是否启用aof持久化方式 。否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。
    # 因为 redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no
    appendonly yes
    #AOF持久化时机,共有3个可选值: 
    #  no:表示等操作系统进行数据缓存同步到磁盘(快,持久化没保证) 
    #  always:同步持久化,每次发生数据变更时,立即记录到磁盘(慢,安全) 
    #  everysec:表示每秒同步一次(默认值,很快,但可能会丢失一秒以内的数据)
    # appendfsync always
    appendfsync everysec
    

    aof重写机制(即混合持久化机制)

    1.手动触发
    执行bgrewriteaof命令
    2.自动触发

    #当AOF文件增长到一定大小的时候Redis能够调用 BGREWRITEAOF 对日志文件进行重写 。
    #当AOF文件大小大于该配置项时自动开启重写
    auto-aof-rewrite-min-size 64mb
    #当AOF文件增长到一定大小的时候Redis能够调用 BGREWRITEAOF 对日志文件进行重写 。
    #当AOF文件大小的增长率大于该配置项时自动开启重写。
    auto-aof-rewrite-percentage 100
    

    3.no-appendfsync-on-rewrite参数
    在执行bgrewriteaof操作和主进程写aof文件的操作,两者都会操作磁盘,而bgrewriteaof往往会涉及大量磁盘操作,这样就会造成主进程在写aof文件的时候出现阻塞的情形,现在no-appendfsync-on-rewrite参数出场了。如果该参数设置为no,是最安全的方式,不会丢失数据,但是要忍受阻塞的问题。如果设置为yes呢?这就相当于将appendfsync设置为no,这说明并没有执行磁盘操作,只是写入了缓冲区,因此这样并不会造成阻塞(因为没有竞争磁盘),但是如果这个时候redis挂掉,就会丢失数据。丢失多少数据呢?在linux的操作系统的默认设置下,最多会丢失30s的数据。
    因此,如果应用系统无法忍受延迟,而可以容忍少量的数据丢失,则设置为yes。如果应用系统无法忍受数据丢失,则设置为no。

    #值为no代表不能忍受数据丢失
    no-appendfsync-on-rewrite no
    

    4.aof重写流程


    image.png

    相关文章

      网友评论

          本文标题:5.redis相关

          本文链接:https://www.haomeiwen.com/subject/dldkvktx.html