什么是分布式缓存
在高并发的分布式的系统中,缓存是必不可少的一部分。
没有缓存对系统的加速和阻挡大量的请求直接落到系统的底层,系统是很难撑住高并发的冲击,所以分布式系统中缓存的设计是很重要的一环。
分布式缓存方案
Redis。
Memcache。
分布式缓存带来的问题
分布式缓存会带来3大问题:缓存穿透、缓存击穿、缓存雪崩。
缓存穿透
缓存穿透是指缓存和数据库中都没有的数据。数据查询压力大,且每次查询数据都不存在,缓存失去意义。
问题来源:数据不存在。 解决方案:
布隆过滤器。利用布隆过滤来判断数据是否存在,不存在则直接返回。
接口校验。
缓存击穿
缓存穿透是指缓存中没有而数据库中有的数据。用户在缓存中没有读到数据,而是直接从数据库中读取数据,引起数据库压力瞬间增大,造成过大的压力。
问题来源:数据不存在于缓存中,而存在于数据库中。 解决方案:
设置热点数据永不过期。
缓存雪崩
缓存雪崩是指缓存中数据大批量到期,并且查询数据量过大,从而引起数据库压力过大。
问题来源:数据大批量到期。 解决方案:
缓存数据的过期时间设置为随机值,防止同一时间大量数据过期现象的发生。
设置热点数据永不过期。
常见缓存淘汰策略
先进先出。
LFU(Least Frequently Used)
LRU(Least Recently Used)