缓存面试题
项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果? 如何使用 如何使用是回答用缓存来干嘛了。 回答点:缓存能用来干嘛,项目中的缓冲用来干嘛了。 缓存当然是用来缓冲存储层的数据的和计算后的结果。 在我们项目这使用了以上两种。 xxxx and xxxx 为什么使用 回答这个为什么使用的时候围绕两点:性能和高并发。 缓存了计算后的结果,节省了计算时间,那么自然性能就上来了。 缓存了存储层的数据,后续请求无需再次访问数据库,那么并发自然也就上来了。MySQL的QPS到2000已经是单机的瓶颈了,Redis单机的QPS上限在10w,并发提升50倍。 使用不当的后果,怎么避免 数据不一致问题:比如现在有一个写命令过来。 如果先操作缓存,再操作数据库。当操作完缓存后,OOM了。这个时候数据就不一致了。 数据库和缓存数据不一致 缓存雪崩问题:当缓存集体失效或者缓存服务器宕机时,那么大量的请求会打到存储层,就可能级联导致存储层雪崩。 缓存穿透问题:当出现大量的缓存miss,流量就会打到存储层,也可能引起存储层的崩溃 缓存击穿问题:当某个热点key过期时,也会有大流量打到存储层,也可能引起存储层的崩溃 三个问题 Redis 和 Memcached 有什么区别?Redis 的线程模型是什么?为什么 Redis 单线程却能支撑高并发? 这个问题其实是在问技术选型。