什么是缓存击穿、雪崩、穿透
随着互联网的越来越普及,用户越来越多,系统性能瓶颈成了越来越热门的话题。 要解决性能问题的技术手段有很多,比如: 缓存、CDN加速、页面静态化、集群、分布式、异步等。 缓存 通常被作为首先技术方案,简单而且提升效果明显,它能够将速度提升100倍。那么问题来了,缓存为啥会怎么快呢? 因为传统的数据库操作是基于磁盘的,而缓存是基于内存的,内存操作和磁盘操作的速度根本不是一个数量级的。目前市面上主流的缓存有: redis 和 memcache ,这两个都是基于内存的缓存技术,二者的区别我在这里暂时不讲。使用缓存的伪代码一般如下: String order = redisClient.get(key); if (order != null ) { return order; } order = db.get(key); redisClient.put(key,order); redisClient.expire(key, 3000 ); return order; 根据key获取数据,先从缓存中查一下有没有,如果有则直接返回。如果没有,再从数据库中查到数据,然后将数据放入缓存中,并且给当前key设置一个失效时间,下次再用同样的key来请求数据时,就能够直接从缓存中查询到并返回,减少请求数据库的频次,提升性能,因为数据库连接是稀有资源。 那么问题又来了,为啥要设置失效时间,不设置不行吗?