项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果?

。面试题

项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果?

考察缘由

缓存是互联网项目开发非常基本重要的知识,只要问到缓存,肯定是先问问你项目哪里用了缓存?为啥要用?不用行不行?如果用了以后可能会有什么不良的后果?这就是看看你对缓存这个东西背后有没有思考,如果你就是傻乎乎的瞎用,没法给面试官一个合理的解答,那面试官对你印象肯定不太好,觉得你平时思考太少,就知道干活儿。

面试题剖析

项目中缓存是如何使用的?

验证码:将用户登录需要的验证码保存到缓存,比较的时候拿取缓存中对应的值,验证成功后就删除缓存中的值。

redis简单举例

设置验证码在redis保留五分钟后自动失效。

redisTemplateUtil.setExpire(RedisPrefixConstants.ADMIN_LOGIN_IMAGE_CODE+request.getParameter("code"),imageCode,5*60);

验证通过后删除验证码。

redisTemplateUtil.set(RedisPrefixConstants.COMMON_SYSPRAM_BY_CODE + param.getCode(), param.getValue());

为什么要用缓存?

高性能

假如有一个请求,比如读取系统所有参数,相对耗时比较长,该查询结果可能接下来几个小时都不会变了,或者变了也可以不用立即反馈给用户。那么此时咋办?

此时,我们可以使用缓存来提高系统效率。

高并发

mysql 天然不是支持高并发的数据库,单机支撑到 2000QPS 就容易报警了。

所以要是你有个系统,高峰期一秒钟过来的请求有 1万,那一个 mysql 单机绝对会死掉。你这个时候就只能上缓存,把很多数据放缓存,别放 mysql。缓存功能简单,说白了就是 key-value 式操作,单机支撑的并发量轻松一秒几万十几万,轻松支撑高并发 。单机承载并发量是 mysql 单机的几十倍。

缓存使用不当会造成什么后果?

常见的缓存问题有以下几个:

缓存与数据库双写不一致

缓存雪崩、缓存穿透

缓存并发竞争

你可能感兴趣的:(项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果?)