redis的缓存穿透,缓存雪崩,持久化方式
Redis redis是一个可进行持久化的内存数据库,可以支持string,list,hsh,set,zet这五种数据类型。 redis的性能很高(redis的读取速度可以达到11万次每秒,写的速度达到8万次每秒) redis【缓存穿透】 缓存穿透是指去查询一个一定不存在的数据,比如说我一共有100个商品,然后你偏偏去查询第101,102个这些不存在的商品,这个时候我们通常情况下就先回去redis里面去查询,但是redis里面就存在,所以就会去数据库中查询,如果大量的这种请求过来,那么就都落在了数据库上面,而数据库也不存在这样的数据,那么缓存就如同虚设,增加了数据库的压力。 解决方法: 为了解决这个问题,我们可以缓存空值,也就是说即便数据库中查询出来的数据不存在,也会缓存空值在reids的缓存中,这样下一次就可以走我们的缓存而不是数据库啦,但是太多的空值会占用我们的缓存的内存空间,导致内存的浪费,我们就通过给它设置一个过期时间比如3分钟,这样过了3分钟后存入的空值就会清空,释放空间,但是这样又出现另外一个问题,就是说如果有人在三分钟内加了一条数据,这个时候就有了第101条数据啦,但是当我们用户去查的时候,走的缓存而缓存中却还是空值,导致缓存中的数据和数据库中的数据不一致,为了解决这个问题我们可以在后台增加数据的时候,同时主动更新缓存中存在的数据,或者去删除缓存中的数据