Redis缓存-创新互联

一.简介

缓存就是数据交换的缓冲区(称作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

缺点: ①实现复杂

  ②布隆过滤器是一种概率统计,存在误判可能 ,可能布隆过滤器判断存在实际并不存在,有穿透风险

我们采用方案一来解决商户查询缓存:

其他方案
  • 增加数据复杂度,做好数据基础格式校验
  • 加强用户权限校验
  • 做好热点参数的限流
2.缓存雪崩

缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。

解决方案
  • 给不同的Key的TTL添加随机值
  • 利用Redis集群的哨兵机制提高服务的可用性
  • 给缓存业务添加降级限流策略,当redis故障时,服务及时降级,如快速失败、拒绝服务等
  • 给业务添加多级缓存,比如说可以在反向代理服务器nginx、JVM内部建立本地缓存来缓解
3.缓存击穿

缓存击穿问题也叫热点Key问题,就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了,无数的请求访问会在缓存重建时给数据库带来巨大的冲击。

解决方案:①添加互斥锁

保证缓存与数据库的一致性,但是如果缓存重建时间过长,性能会有极大影响,甚至有死锁的风险,牺牲了可用性

解决方案:②逻辑过期

在缓存重建时保证可用性,追求性能,只是访问时得到的很可能是旧数据,不能保证缓存与数据库的一致性

两种方案对比

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前标题:Redis缓存-创新互联
标题路径:http://ybzwz.com/article/peigd.html