缓存简介

缓存分为页面缓存(静态页面缓存,页面片段缓存),数据缓存等。在单机环境下,为了降低DB的访问压力,或者是为了提高页面的访问速度都可以使用缓存
如果使用了缓存,一般的操作流程是先访问缓存,如果缓存有,就从缓存取;如果没有,则访问DB或其他数据源;如果缓存空间可用,则将查询的数据放入缓存,否则执行缓存替换策略。如果是更新操作,可以同时更新缓存和数据源;也可以先更新数据源,再将缓存置为无效,再次读取就会从数据源读取;也可以先更新缓存,再开个线程配合定时机制和时间戳将缓存中的数据更新到数据源,但缓存数据可能会丢失,所以不安全。
如果先更新缓存,为了解决缓存数据丢失的问题,则可以先写本地日志,在更新缓存。
       在单机下不存在缓存一致性问题,因为只有一份缓存数据,只有缓存和数据源不一致的问题。
      分布式数据一致性是个比较难处理的问题,互联网公司一般都没有采用强一致性,转而采用弱一致性(最终一致性),允许存在一个时间窗口,在这个时间窗口中缓存是不一致的。在分布式环境下,你可以看下CAP,BASE,Paxos,ZAB协议。zookkeeper目前使用的比较多,它的协议就是ZAB。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值