本文介绍: 双缓存,缓存1中设置过期时间,缓存2中在启动时加载,进行缓存预热,先访问缓存1,如果有值则返回;缓存1没有值,则访问缓存2,返回数据,并启动异步更新线程来同时更新缓存1和缓存2的数据,如果value特别大的话会占用很多内存,内存利用率低。只让一个线程构建缓存,其他线程等待构建缓存的线程执行完,重新从缓存中获取数据,保证了每个时刻只有一个线程在执行请求,但是会导致很多线程在等待一个线程,降低了系统的qps。利用互斥锁,缓存中没有,先获取锁,再去请求数据库,写入缓存,这样后面的数据就可以从缓存中拿到数据了。
redis缓存问题
缓存击穿
缓存击穿是指热点key在某个时间点过期的时候,而恰好在这个时间点对这个Key有大量的并发请求过来,从而大量的请求打到db
解决方案:
缓存穿透
请求缓存和数据库中不存在的数据,导致每次请求都到数据库中去查询,导致数据库压力过大
解决方案:
缓存雪崩
缓存同一时间大量失效或者由于某些原因缓存不能提供服务,导致大量请求直接访问数据库,从而导致数据库压力倍增,造成数据库也宕机
缓存一致问题
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。