缓存问题

请求 一般 80% 请求 memache 或 redis ,剩余请求 mysql ;

解决缓存存在的问题

1> 缓存穿透

    1: 判断是否存在。
    2: 存在 -> 缓存去
    3: 不存在 -> 数据库 -> 取到   -> 缓存 NUll (设置数据存在时间)

2> 缓存雪崩

    1: 同一时间失效多个key对memache 或redis 访问 造成压力 ,然后
       请求会在数据库中请求。造成服务器雪崩。 
    2:同一时间请求过多。  

    解决方案  

    防止奔溃

    1:碰到这种情况,一般并发量不是特别多的时候,使用最多的解决方案是加锁排队,
    2:给每一个缓存数据增加相应的缓存标记,记录缓存的是否失效,如果缓存标记失效
      ,则更新数据缓存。
    3key不要在同一时间失效
    4:备份的服务器。(土豪专用)。  

    奔溃后
    1:停止服务 缓存预热。


3> 缓存预热


    (1)直接写个缓存刷新页面,上线时手工操作下;
    (2)数据量不大,可以在项目启动的时候自动进行加载;
    (3)定时刷新缓存;

4> 原子缓存


    (1) 储存一个商品id 进行查询
    (2) 拆分一个缓存  

5> 分页条件缓存


      memcache      
     (1) 根据`where`条件和`limit`从mysql取出每页的数据(每页显示的条数)做缓存
     (2) 注意的是生成拼成条件的`key` 比如 user_list_1_$where  一个key
         ($where是一个序列化的一个值)     

6> 缓存版本


   和上面一样 在分页条件缓存 key 多拼一个_1 从1开始 没删除 修改 或 新增 增加一个
   版本。

LRU: 好长时间生成一个key会删除。
LFU: 先生成的key 没有用会删掉

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值