zoukankan      html  css  js  c++  java
  • 程序员谈话系列——关于redis的一些理解(一)

    一,Redis数据丢失,断电怎么办?

    在redis当中有RDB和AOF备份操作,RDB是每隔一段时间去同步redis,生成二进制文件。AOF将写命令加到一个appendonly的文件中,数据量比较全相对实时,但是文件比较大。RDB是bgsave命令,后台fork子进程,通过写时复制,生成的redis文件大的话就会有很大的影响

    二,redis集群怎么保证?

    制定哨兵模式,当master出现宕机的时候,从slave中选取最优的,保证高可用性。

    三,集群脑裂现象怎么解决?

    预防脑裂——设置超时:如 - 链接超时设置为2秒。任何链接只能在2秒内工作。那么哨兵选举新的master,可以延时2秒。 异地多活:提升网络健康状态,保证硬件不出现问题,就不会有链接中断的可能,且万一链接中断,一定是master对外所有链接中断。

    解决脑裂——设置监控中心,提供预警功能。线下人为处理脑裂后果。 定时扫描,同步数据。

    四,redis初始化时如何同步数据库

    启动一台slave 的时候,会发送一个psync命令给master ,如果是这个slave第一次连接到master,他会触发一个全量复制。master就会启动一个线程,生成RDB快照,还会把新的写请求都缓存在内存中,RDB文件生成后,master会将这个RDB发送给slave的,slave拿到之后做的第一件事情就是写进本地的磁盘,然后加载进内存,然后master会把内存里面缓存的那些新命名都发给slave。

    五,缓存击穿怎么解决?

    Hot Key在某一时间突然失效,出现数据崩溃现象。

    1,缓存时间永不失效

    2,用分布式锁避免直接落在库中:set nx可以用jedis实现。(如何避免死锁的现象?)

    3,设置一个多级缓存,避免直接查询数据库,使用eache。

  • 相关阅读:
    Rabbitmq 性能测试
    B+树图文详解
    图的概念和存储(邻接矩阵,邻接表)
    WebApi系列文章
    Asp.Net MVC项目集成Swagger
    正则表达式匹配两个特殊字符中间的内容
    数学常数e的含义
    十大排序算法总结
    C#集合类型大揭秘
    深入System.Web.Caching命名空间 教你Hold住缓存管理(三)
  • 原文地址:https://www.cnblogs.com/ffdsj/p/12555036.html
Copyright © 2011-2022 走看看