重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
缓存就是数据交换的缓冲区(称作Cache [ kæʃ ] ),是存贮数据的临时地方,一般读写性能较高
成都创新互联公司-专业网站定制、快速模板网站建设、高性价比金州网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式金州网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖金州地区。费用合理售后完善,十余年实体公司更值得信赖。二.添加Redis缓存 三.缓存更新策略 1.主动更新策略 Cache Aside Pattern(推荐)需要调用者自己编码,但可控性高
Read/Write Through Pattern优点:方便调用者
缺点:维护这样的服务成本较高
Write Behind Caching Pattern优点:效率较高
缺点:要维护异步任务较复杂,并且难以保证一致性,甚至如果缓存出现宕机,数据将全部丢失
2.操作缓存 删除缓存与更新缓存如何保证缓存与数据库的操作的同时成功或失败单机系统可使用Spring的@transactional事务注解
如:
线程安全问题①先删除缓存,再操作数据库
正常情况:
异常情况:
由于读写缓存的速度远高于更新数据库的速度,所以该问题发生概率较高
②先操作数据库,再删除缓存(推荐)
正常情况:
异常情况:
该问题发生概率较低,如果发生了,可以在写入缓存时设置超时时间
3.总结四.三大热点问题 1.缓存穿透解决方案:①缓存空对象缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。如果有很多恶意的类似请求会给数据库带来很大的压力。
解决方案:②布隆过滤优点: 实现简单,维护方便
缺点: ①额外的内存消耗(即缓存过多的空对象,可以通过设置过期时间TTL缓解)
②可能造成短期的不一致(缓存空对象时,恰好数据库插入了这么一条数据,当然可以通过插入后更新缓存来解决)
原理:实际上是一个字节数组存了很多二进制位,把数据经过某种Hash算法转成Hash值,再把这些Hash值转成二进制位保存到布隆过滤器中,用0,1表示是否存在
优点:内存占用较少,没有多余key
缺点: ①实现复杂
②布隆过滤器是一种概率统计,存在误判可能 ,可能布隆过滤器判断存在实际并不存在,有穿透风险
我们采用方案一来解决商户查询缓存:
其他方案解决方案缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。
解决方案:①添加互斥锁缓存击穿问题也叫热点Key问题,就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了,无数的请求访问会在缓存重建时给数据库带来巨大的冲击。
解决方案:②逻辑过期保证缓存与数据库的一致性,但是如果缓存重建时间过长,性能会有极大影响,甚至有死锁的风险,牺牲了可用性
两种方案对比在缓存重建时保证可用性,追求性能,只是访问时得到的很可能是旧数据,不能保证缓存与数据库的一致性
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧