redis是缓存,相当于另一个数据库,再调用数据库之前,先去看redis里面有没有有没有数据,没有再去数据库里查。用来减轻服务器的压力。
redis怎么确保双写一致,其实网上这些方法也没法百分比确保一致性,但是并比较公论的说法是:新增时先插数据库再插入redis中方,删除时先删除redis再删除数据库。
缓存雪崩问题:大量的数据同时失效
其实这个时必然的问题,所以在使用redis时都会使用这个策略,也就是在设置缓存失效时间的时候加一个随机值,这样失效的时间就不是在同一时间了,这样就不会大量失效了。
缓存击穿:选择redis里面没有的值进行大量访问。比如-1的key值
当访问redis没有值的时候立即返回一个null,然后从数据库中查到这个值,把它维护到redis中,如果数据库中也没有,那就给redis中维护一个-1,null的数据。但是这个方法不是很有效,效率低且不智能很消耗资源,所以推荐使用布隆过滤器。
缓存穿透:当某一个热点缓存失效的时候有大量的访问这个值,所以会有大量的访问穿透到到数据库上。
给所有热点数据设置永久不失效