Redis也太好用了吧!难怪在国内这么流行…

531 阅读3分钟

编程语言那么多,但不管你是从事Python、Java、Go、PHP、Ruby等,Redis都应该是一个你比较熟悉的中间件。

Redis号称支持并发11万读操作、并发8万写操作。由于优异的性能和方便的操作, Redis在国内各大公司都很热门,比如阿里、腾讯、字节跳动、百度、美团、小米等。

可大部分经常写业务代码的程序员,在实际工作中或许只用到了set value、GetValue两个操作,而对Redis缺乏一个整体的认识。

只有当你真正深入去了解了Redis,才会发现Redis的无穷妙用,让你在工作和面试中都如鱼得水。

本文将从8个问题引入,带你深刻理解Redis。(同时我还整理了一份Redis的学习指南,需要的朋友可以自取。)

1、为什么使用Redis?

项目中使用Redis,主要考虑性能和并发。如果仅仅是分布式锁这些,完全可以用中间件Zookpeer等代替。

性能:

如下图所示,在大并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常。这个时候,就需要使用Redis做一个缓冲操作,让请求先访问到Redis,而不是直接访问数据库。

可是,Redis也有慢查询操作,应该如何优化?值得思考。

根据交互效果的不同,响应时间没有固定标准。在理想状态下,我们的页面跳转需要在瞬间解决,对于页内操作则需要在刹那间解决。

并发:

如下图所示,在大并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常。这个时候,就需要使用Redis做一个缓冲操作,让请求先访问到Redis,而不是直接访问数据库。

2、使用Redis有什么缺点?

缓存和数据库双写一致性问题

缓存雪崩问题

缓存击穿问题

缓存的并发竞争问题

3、单线程的Redis为什么这么快?

多路复用Resp协议

单线程

内存操作

(面试官会针对这几点详细提问)

4、Redis的数据类型及使用场景(这5种类型你用到过几个?)

String:一般做一些复杂的计数功能的缓存;

Hash:存储二维数据或对象;

List:可实现队列,栈及有序的数据存储;

Set:常用于黑名单,微信抽奖等功能,应用场景多变;

SortedSet:做排行榜应用,取TOPN操作;延时任务;做范围查找。

5、Redis过期策略和内存淘汰机制?

定期删除,惰性删除策略等;

6、Redis和数据库双写一致性问题;

(最终一致性和强一致性)

7、如何应对缓存穿透和缓存雪崩问题?

中小型的公司一般遇不到这些问题,但是大并发的项目,流量有几百万左右,这两个问题一定要深刻考虑。

8、如何解决Redis并发竞争Key问题?

这个你知道怎么解答吗?

这8个问题是来源于阿里面试真题,基本上你只要把上面这8个问题吃透,关于Redis绝对可以征服面试官!

这8个问题的详细答案及《Redis学习指南》我已经整理到了文档里,需要的朋友可以私信或者在留言区获取哈!