腾讯云服务器搭建国外主题网站,您需要使用哪种编程语言或框架?
摘要:腾讯云服务器用什么做网站,国外主题网站,抖音搜索引擎推广,网站服务器怎么打开缓存击穿(某个热点key缓存失效) 概念 缓存中没有但数据库中有的数据,假
腾讯云服务器用什么做网站,国外主题网站,抖音搜索引擎推广,网站服务器怎么打开缓存击穿#xff08;某个热点key缓存失效#xff09;
概念 缓存中没有但数据库中有的数据#xff0c;假如是热点数据#xff0c;那key在缓存过期的一刻#xff0c;同时有大量的请求#xff0c;这些请求都会击穿到DB#xff0c;造成瞬时DB请求量大、压力增大和缓存雪崩的…缓存击穿某个热点key缓存失效
概念 缓存中没有但数据库中有的数据假如是热点数据那key在缓存过期的一刻同时有大量的请求这些请求都会击穿到DB造成瞬时DB请求量大、压力增大和缓存雪崩的区别在于这里针对某一key缓存后者则是很多key 预防 设置热点数据不过期定时任务定时更新缓存设置互斥锁 SpringCache解决方案 缓存的同步syncsync可以指示底层将缓存锁住使只有一个线程可以进入计算而其他线程堵塞直到返回结果更新到缓存中
Cacheable(value user:page, keyGenerator keyGenerator, cacheManager redisCacheManager1Hour, sync true)
public MapString, Object page(Integer pageNum, Integer pageSize) {MapString, Object map new HashMap();PageUser page new Page(pageNum, pageSize);PageUser listPage this.userMapper.selectPage(page, null);map.put(totalRecord, listPage.getTotal());map.put(totalPage, listPage.getPages());map.put(list, listPage.getRecords());return map;
}缓存雪崩多个热点key失效
概念 大量的key设置了相同的过期时间导致缓存在同一时刻全部失效造成瞬时DB请求量大、压力骤增引起雪崩 预防 存数据的过期时间设置随机防止同一时间大量数据过期现象发生设置热点数据永远不过期定时任务定时更新 SpringCache解决方案 设置差别的过期时间比如cacheManager配置多个过期时间维度配置文件time-to-live配置
spring:redis:host: 192.168.1.12port: 6379password: 123456cache:# 使用的缓存类型type: redisredis:# 过期时间单位毫秒time-to-live: 36000# 开启前缀默认trueuse-key-prefix: true# 键的前缀key-prefix: gen# 是否缓存空结果防止缓存穿透默认truecache-null-values: true缓存穿透查询不存在数据
概念 查询一个不存在的数据由于缓存是不命中的并且出于容错考虑如发起id为“-1”不存在的数据如果从存储层查不到数据则不写入缓存这将导致这个不存在的数据每次请求都要到存储层去查询失去了缓存的意义。存在大量查询不存在的数据可能DB就挂掉了这也是黑客利用不存在的key频繁攻击应用的一种方式 预防 接口层增加校验数据合理性校验缓存取不到的数据在数据库中也没有取到这时也可以将key-value对写为key-null设置短点的过期时间防止同个key被一直攻击 SpringCache解决方案 空结果也缓存默认不配置condition或者unless就行
