最新公告
  • 新注册用户请前往个人中心绑定邮箱以便接收相关凭证邮件!!!点击前往个人中心
  • 数千字Redis架构师级全方位知识点总结思维导图xmind

    数千字Redis架构师级全方位知识点总结思维导图xmind 最后编辑:2021-03-13
    增值服务: 自动提取 使用说明 安装指导 环境配置二次开发BUG修复

    效果演示

    部分文字知识点及大纲摘要

    Redis持久化意义

    1. 是做灾难恢复,数据恢复,也可以归类到高可用的一个环节里面去,比如你redis整个挂了,然后redis就不可用了,你要做的事情是让redis变得可用,尽快变得可用
    2. 大量的请求过来,缓存全部无法命中,在redis里根本找不到数据,这个时候就死定了,缓存雪崩问题,所有请求,没有在redis命中,就会去mysql数据库这种数据源头中去找,一下子mysql承接高并发,然后就挂了
    3. redis的持久化做好,备份和恢复方案做到企业级的程度,那么即使你的redis故障了,也可以通过备份数据,快速恢复,一旦恢复立即对外提供服务

    Redis持久化RDB

    优点
    1. RDB会生成多个数据文件,每个数据文件都代表了某一个时刻中redis的数据,这种多个数据文件的方式,每个文件都代表了某一个时刻的完整的数据快照,非常适合做冷备
    2. RDB对redis对外提供的读写服务,影响非常小,可以让redis保持高性能,因为redis主进程只需要fork一个子进程,让子进程执行磁盘IO操作来进行RDB持久化即可
    3. 相对于AOF持久化机制来说,直接基于RDB数据文件来重启和恢复redis进程,更加快速
    缺点
    1. 如果想要在redis故障时,尽可能少的丢失数据,那么RDB没有AOF好。一般来说,RDB数据快照文件,都是每隔5分钟,或者更长时间生成一次,这个时候就得接受一旦redis进程宕机,那么会丢失最近5分钟的数据,这个问题,也是rdb最大的缺点,就是不适合做第一优先的恢复方案,如果你依赖RDB做第一优先恢复方案,会导致数据丢失的比较多
    2. RDB每次在fork子进程来执行RDB快照数据文件生成的时候,如果数据文件特别大,可能会导致对客户端提供的服务暂停数毫秒,或者甚至数秒。一般不要让RDB的间隔太长,否则每次生成的RDB文件太大了,对redis本身的性能可能会有影响的
    配置
    1. save 60 1000 : 每隔60s,如果有超过1000个key发生了变更,那么就生成一个新的dump.rdb文件,就是当前redis内存中完整的数据快照,这个操作也被称之为snapshotting,快照。也可以手动调用save或者bgsave命令,同步或异步执行rdb快照生成,save可以设置多个,就是多个snapshotting检查点,每到一个检查点,就会去check一下,是否有指定的key数量发生了变更,如果有,就生成一个新的dump.rdb文件
    工作流程
    1. redis根据配置自己尝试去生成rdb快照文件
    2. fork一个子进程出来
    3. 子进程尝试将数据dump到临时的rdb快照文件中
    4. 完成rdb快照文件的生成之后,就替换之前的旧的快照文件,dump.rdb,每次生成一个新的快照,都会覆盖之前的老快照,dump.rdb只有一个
    模拟实验
    通过redis-cli SHUTDOWN这种方式去停掉redis,其实是一种安全退出的模式,redis在退出的时候会将内存中的数据立即生成一份完整的rdb快照
    用kill -9粗暴杀死redis进程,模拟redis故障异常退出,导致内存数据丢失的场景,这次就发现,redis进程异常被杀掉,数据没有进dump文件,几条最新的数据就丢失了

    redis回收算法

    介绍
    redis是会在数据达到一定程度之后,超过了一个最大的限度之后,就会将数据进行一定的清理,从内存中清理掉一些数据
    redis默认情况下就是使用LRU策略的,因为内存是有限的
    LRU:Least Recently Used,最近最少使用算法

    将最近一段时间内,最少使用的一些数据,给干掉。比如说有一个key,在最近1个小时内,只被访问了一次; 还有一个key在最近1个小时内,被访问了1万次
    缓存清理设置
    maxmemory,设置redis用来存放数据的最大的内存大小,一旦超出这个内存大小之后,就会立即使用LRU算法清理掉部分数据
    对于64 bit的机器,如果maxmemory设置为0,那么就默认不限制内存的使用,直到耗尽机器中所有的内存为止
    maxmemory-policy,可以设置内存达到最大闲置后,采取什么策略来处理
    清理策略
    (1)noeviction: 如果内存使用达到了maxmemory,client还要继续写入数据,那么就直接报错给客户端
    (2)allkeys-lru: 就是我们常说的LRU算法,移除掉最近最少使用的那些keys对应的数据
    (3)volatile-lru: 也是采取LRU算法,但是仅仅针对那些设置了指定存活时间(TTL)的key才会清理掉
    (4)allkeys-random: 随机选择一些key来删除掉
    (5)volatile-random: 随机选择一些设置了TTL的key来删除掉
    (6)volatile-ttl: 移除掉部分keys,选择那些TTL时间比较短的keys

    Redis 主从架构

    主从核心机制
    (1)redis采用异步方式复制数据到slave节点,不过redis 2.8开始,slave node会周期性地确认自己每次复制的数据量
    (2)一个master node是可以配置多个slave node的
    (3)slave node也可以连接其他的slave node
    (4)slave node做复制的时候,是不会block master node的正常工作的
    (5)slave node在做复制的时候,也不会block对自己的查询操作,它会用旧的数据集来提供服务; 但是复制完成的时候,需要删除旧数据集,加载新数据集,这个时候就会暂停对外服务了
    (6)slave node主要用来进行横向扩容,做读写分离,扩容的slave node可以提高读的吞吐量

    猜你在找

    本站所有资源均由网友共享,仅用于参考学习用,请勿直接商用,如有侵权,请联系网站客服删除相关资源。若由于商用引起版权纠纷,一切责任均由使用者承担。
    猿码素材 » 数千字Redis架构师级全方位知识点总结思维导图xmind

    常见问题FAQ

    购买后由于自身原因导致无法使用可以退款吗?
    由于源码的可复制性,原则上购买后是不提供退款服务的,购买前请务必联系客服或技术支持并提供必要信息以确认您是否能够使用该源码。另外可以点击右侧获取本地试用版来自行验证代码可行性。
    源码可以拿来商用吗?
    允许商用,但是使用之前请仔细评估风险,由于使用不当造成的一切后果本站不承担责任。
    源码的更新周期是多久?
    欢迎用户积极反馈Bug及新需求,有Bug的话会及时更新,有新功能也会定期更新。
    源码不会使用,可以提供技术支持吗?
    凡是购买了本站源码均可联系本站技术人员获取一对一技术支持。
    • 2021-03-13Hi,初次和大家见面了,请多关照!

    发表评论

    Hi, 如果你对这款资源有疑问,可以在上面留言哦!

    联系发布者
    • 418会员总数(位)
    • 74资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 445稳定运行(天)

    欢迎加入猿码素材,上传源码收益100%归作者所有!

    立即加入 了解详情
  • © 2021 yuanmasucai.com - 猿码素材 & Geekerstar. All rights reserved 蜀ICP备15019641号-4

  • XML地图 | 站长导航
         
    成为赞助用户享有更多特权立即升级