zoukankan      html  css  js  c++  java
  • Redis 相关

    高并发
    多机的时候,虽然有失效时间,但还是会有短时间内缓存和数据库数据不一致(读操作不需要特殊操作),
    更新操作的时候
    先删除缓存,再更新数据库
    先更新数据库,再删除缓存
    原子性破坏,增加队列重试

    先删除缓存,再更新数据库
    在高并发下表现不如意,在原子性被破坏时表现优异
    先更新数据库,再删除缓存(Cache Aside Pattern设计模式)
    在高并发下表现优异,在原子性被破坏时表现不如意


    雪崩
    大量key同时失效,或者缓存层崩了
    1.多机负载,哨兵监控,限流降级,同一个线程对同一个key
    2. 给每个key的过期时间加随机数,尽量设置把过期时间设置的均匀一些
    3.缓存持久化,宕机之后重启并快速从磁盘恢复

    穿透
    不断地访问数据库不存在的值,空值因为不存缓存,就会一直访问数据库。
    1.数据库返回为空,也放入缓存,并设置短过期时间,下次再访问就返回空。
    2.布隆过滤器,不合法的提前拦截

    持久化
    RDB和AOF的优缺点

    RDB优点:全量数据快照,文件小,恢复快

    RDB缺点:无法保存最近一次快照之后的数据,数据量大会由于I/O严重影响性能

    AOF优点:可读性搞,适合保存增量数据,数据不一丢失

    AOF缺点:文件体积大,恢复时间长

  • 相关阅读:
    Java基础之十五 泛型
    设计模式之工厂模式
    数据结构之散列
    程序员的自我修养十内存
    程序员的自我修养一温故而知新
    Java编程思想之二十 并发
    Java编程思想之十八 枚举类型
    Java基础之十六 数组
    Java编程思想之十四 类型信息
    Java基础之十三 字符串
  • 原文地址:https://www.cnblogs.com/jayblog/p/13219710.html
Copyright © 2011-2022 走看看