reids存放的5种类型:List,Set,String,hash,zset
redis的几个重要概念:缓存穿透,缓存击穿,缓存雪崩。
缓存穿透:穿透,字面理解,就是穿过了的意思。为什么穿过了 ,不存在嘛。所以,缓存穿透的意思是:大量的请求过来,而缓存不存在此key,所以就直接去数据库查询,造成数据库压力。
解决办法:1.将查询不到的值在缓存中置空,一定要设置过期时间。因为如果不设置过期时间,那么数据库中增加了此值后,会呆滞数据库和缓存不一致的情况。
2.布隆过滤器
缓存击穿:击穿,字面理解,击,有千军万马之意。就是缓存失效(到过期时间)引起的请求直接发数据库。和缓存雪崩的区别是针对一个“热点key”。
解决办法:缓存击穿后,加锁。单机加Lock锁和synchronized锁,分布式中用分布式锁,第一个请求过来过来放入缓存。
缓存雪崩:缓存大量集中失效。
解决办法:1.redis高可用 2.限流降级 3.数据预热 4.不同的过期时间。