Redis是什么?
Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server(远程数据服务),该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。
Redis 可以干什么?
缓 存,毫疑问这是Redis当今最为人熟知的使用场景。再提升服务器性能方面非常有效;
排行榜,如果使用传统的关系型数据库来做这个事儿,非常的麻烦,而利用Redis的SortSet数据结构能够非常方便搞定;
计算器/限速器,利用Redis中原子性的自增操作,我们可以统计类似用户点赞数、用户访问数等,这类操作如果用MySQL,频繁的读写会带来相当大的压力;限速器比较典型的使用场景是限制某个用户访问某个API的频率,常用的有抢购时,防止用户疯狂点击带来不必要的压力;
好友关系,利用集合的一些命令,比如求交集、并集、差集等。可以方便搞定一些共同好友、共同爱好之类的功能;
简单消息队列,除了Redis自身的发布/订阅模式,我们也可以利用List来实现一个队列机制,比如:到货通知、邮件发送之类的需求,不需要高可靠,但是会带来非常大的DB压力,完全可以用List来完成异步解耦;
Session共享,以PHP为例,默认Session是保存在服务器的文件中,如果是集群服务,同一个用户过来可能落在不同机器上,这就会导致用户频繁登陆;采用Redis保存Session后,无论用户落在那台机器上都能够获取到对应的Session信息。
Redis这玩意不用多说,Java后端打工人就没有没接触过的,现在出去面试基本上是必问项;而且在工作中在项目中还能起很大的作用。它不仅能减少数据库的操作、并且你还可以利用redis的一些数据结构如set sorted set 解决一些特定的问题、利用单线程实现分布式锁、一些简单的订阅发布等等。
当然,这些你都会的话,那说明你只是停留在会用的阶段。如果你想要精通redis,并想在面试的中凭借Redis俘获面试官的芳心的话。除了会用以外,还要去掌握redis一些基本的原理如压缩表、跳跃表、哨兵模式、集群、高可用,这样可以让你更好的使用redis,保证缓存利用最大化、资源最优化。掌握这些你在面试的时候才能跟面试官侃侃而谈,甚至只用一个Redis就吊打面试官,斩获心仪Offer!
近期很多粉丝也是反应,面试的时候遇到Redis问题答几句平时背的八股答案还行,但面试官一深问就裂开了,关于原理源码啥的,平时工作中用的少根本接不上面试官的狂轰滥炸,直接怀疑人生,问我有没有好的Redis学习资源,最好是涉及到Redis方方面面的。这里就给大家推荐一份我在某金看到的号称“阿里最新”Redis全栈小册。
不多bb,我们直接来看内容:
阿里Redis全栈小册
小册分为基础,应用,原理,集群,拓展,源码六块,基本上涵盖了Redis的所有操作,但由于篇幅限制,小册一共有200多页,在这里不能全部为大家展示出来
-
基础篇
-
应用篇
-
原理篇
-
集群篇
-
拓展篇
-
源码篇