Java对外提供接口,总结到位
作者:互联网
### 1、为什么使用redis
**分析**:博主觉得在项目中使用redis,主要是从两个角度去考虑:**性能**和**并发**。当然,redis还具备可以做分布式锁等其他功能,但是如果只是为了分布式锁这些其他功能,完全还有其他中间件(如zookpeer等)代替,并不是非要使用redis。因此,这个问题主要从性能和并发两个角度去答。
**回答**:如下所示,分为两点
**(一)性能**
如下图所示,我们在碰到需要执行耗时特别久,且结果不频繁变动的SQL,就特别适合将运行结果放入缓存。这样,后面的请求就去缓存中读取,使得请求能够**迅速响应**。
![](http://www.icode9.com/i/li/?n=2&i=images/20210703/1625291593311281.jpg)
**题外话:**忽然想聊一下这个**迅速响应**的标准。其实根据交互效果的不同,这个响应时间没有固定标准。不过曾经有人这么告诉我:"在理想状态下,我们的页面跳转需要在**瞬间**解决,对于页内操作则需要在**刹那**间解决。另外,超过**一弹指**的耗时操作要有进度提示,并且可以随时中止或取消,这样才能给用户最好的体验。"
那么**瞬间、刹那、一弹指**具体是多少时间呢?
根据《摩诃僧祗律》记载
```
一刹那者为一念,二十念为一瞬,二十瞬为一弹指,二十弹指为一罗预,二十罗预为一须臾,一日一夜有三十须臾。
```
那么,经过周密的计算,一**瞬间**为0.36 秒,一**刹那**有 0.018 秒.一**弹指**长达 7.2 秒。
**(二)并发**
如下图所示,在大并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常。这个时候,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问数据库。
![](http://www.icode9.com/i/li/?n=2&i=images/20210703/1625291594267688.jpg)
### 2、使用redis有什么缺点
**分析**:大家用redis这么久,这个问题是必须要了解的,基本上使用redis都会碰到一些问题,常见的也就几个。
**回答**:主要是四个问题
(一)缓存和数据库双写一致性问题
(二)缓存雪崩问题
(三)缓存击穿问题
(四)缓存的并发竞争问题
# 最后
本人也收藏了一份Java面试核心知识点来应付面试,借着这次机会可以免费送给我的读者朋友们:
**目录:**
![二面蚂蚁金服(交叉面),已拿offer,Java岗定级阿里P6](http://www.icode9.com/i/li/?n=2&i=images/20210703/1625291594212064.jpg)
Java面试核心知识点
**一共有30个专题,足够读者朋友们应付面试啦,也节省朋友们去到处搜刮资料自己整理的时间!**
![二面蚂蚁金服(交叉面),已拿offer,Java岗定级阿里P6](http://www.icode9.com/i/li/?n=2&i=images/20210703/1625291594202273.jpg)
Java面试核心知识点
**资料的领取方式:点赞后【[戳面试资料](https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB)】即可免费获取哦!**
标签:缓存,Java,redis,接口,面试,https,com,到位 来源: https://blog.51cto.com/u_15290980/2972733