Java基础到就业!项目加面试!之Redis面试大全!倾心整理【建议收藏】_redis结合项目面试

我身边越来越多的朋友,从农村出来到现在在大城市安身立命,甚至在一线城市买车买房。有的已经成为大厂的Leader,年薪200w+。

所以关注我,不迷路。小孟拥有极光的互联网关系,可以找我内推各个大厂。

极度的说明了,只要努力,一切皆有可能!

技术改变世界,知识改变命运!

兄弟们,鸡汤已经喝完了,让我们开干!

前面已经分享了很多的面试题和项目:

前面的话,已经分享了SpringBoot的相关知识,例如:

1,Java基础大全,帮你省去2w的培训费

2,SpringBoot一天快速入门,超级肝货!【一】

3,SpringBoot一天快速入门,超级肝货!【二】

4,SpringBoot与分布式

5,肝完了,总结了SpringBoot与缓存的知识点,快速掌握

6,一天掌握数据结构和算法面试题,吊打面试官

7,整理了一周的Spring面试大全【含答案】

8,三天肝完设计模式的面试题,面试再不怕设计模式的问题了​​​​​​​

9,Mysql面试大全​​​​​​​

10,算法学习大全

当然也分享了很多的SpringBoot的项目,这些项目真的很肝!

1,基于springboot的在线教育系统分享

2,基于springboot的活动管理小程序系统分享

3,基于springcloud的微服务项目分享【视频教程+源码】

4,撸完这个springboot项目,我对boot轻车熟路【视频教程+源码】

今天复习Redis面试,Redis作为缓存系统,面试基本是常问的。因此必须要搞。

目录

1,什么是Redis

2,Redis和Memecache有什么区别?

3,Redis和Mysql的区别:

4,为什么要用reids,不用不行吗?

5,Redis为什么是单线程的?单线程可以处理高并发吗?

6,为什么Redis 6.0 之后改多线程呢?

7,Redis的五种类型有那些?

8,Redis常见的功能有哪些?

9,Redis的优缺点有哪些

10,说说缓存穿透,缓存雪崩以及缓存击穿?

11,说一下Redis的持久化机制。

12,MySQL 里有 1000w 数据,redis 中只存 10w 的数据,如何保证 redis 中的数据都 是热点数据?

13,说下Redis的淘汰策略?

14,请讲一下Redis的应用场景?

15,如何实现Redis的高可用?


1,什么是Redis

简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以存写速度非常快,因此 redis 被广泛应用于缓存方向。

另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同的业务场景。除此之外,redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。

最主要的Redis就是缓存应用!

2,Redis和Memecache有什么区别?

对于 redis 和 Memecache的区别有下面四点。

a.redis支持更丰富的数据类型(支持更复杂的应用场景):Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。memcache支持简单的数据类型,String。

b.Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用,而Memecache把数据全部存在内存之中。

c.集群模式:memcached没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据;但是 redis 目前是原生支持 cluster 模式的。

d.Memcached是多线程,非阻塞IO复用的网络模型;Redis使用单线程的多路 IO 复用模型。

3,Redis和Mysql的区别:

redis: 内存型非关系数据库,数据保存在内存中,速度快

mysql:关系型数据库,数据保存在磁盘中,检索的话,会有一定的Io操作,访问速度相对慢

4,为什么要用reids,不用不行吗?

主要从“高性能”和“高并发”这两点来看待这个问题。在这两种情况下Redis非常的快。

首先看一下高性能:

假如用户第一次访问数据库中的某些数据。这个过程会比较慢,因为是从硬盘上读取的。将该用户访问的数据存在数缓存中,这样下一次再访问这些数据的时候就可以直接从缓存中获取了。操作缓存就是直接操作内存,所以速度相当快。如果数据库中的对应数据改变的之后,同步改变缓存中相应的数据即可!

最重要的就是在高并发的时候,Redis非常的快。

直接操作缓存能够承受的请求是远远大于直接访问数据库的,所以我们可以考虑把数据库中的部分数据转移到缓存中去,这样用户的一部分请求会直接到缓存这里而不用经过数据库。

那么Redis为啥这么快呢?听小孟道来。

如果简单的解释就是:

首先,采用了多路复用io阻塞机制然后,数据结构简单,操作节省时间。并且,Redis自身的事件处理模型将epoll中的连接、读写、关闭都转换为事件,不在网络I/O上浪费过多的时间。最后,运行在内存中,Redis直接自己构建了VM机制 ,不会像一般的系统会调用系统函数处理,自然速度快。

5,Redis为什么是单线程的?单线程可以处理高并发吗?

Redis的瓶颈不是cpu的运行速度,而往往是网络带宽和机器的内存大小。再说了,单线程切换开销小,容易实现既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理成章地采用单线程的方案了。

当然可以处理高并发,Redis不就实现了吗?

6,为什么Redis 6.0 之后改多线程呢?

上面说了Redis是单线程的,Redis6.0之前Redis都是单线程的,就是处理客户端的数据时,读写都由一个顺序串行的主线程处理。

redis使用多线程并非是完全摒弃单线程,redis还是使用单线程模型来处理客户端的请求,只是使用多线程来处理数据的读写和协议解析,执行命令还是使用单线程。

这样做的目的是因为redis的性能瓶颈在于网络IO而非CPU,使用多线程能提升IO读写的效率,从而整体提高redis的性能。

它的执行命令操作内存的仍然是个单线程。

7,Redis的五种类型有那些?

String 整数,浮点数或者字符串,使⽤场景:缓存、计数器、共享 Session、限速。

Set 集合,通常用在兴趣标签之类的。

Zset 有序集合,通常用在排行榜之类的。

Hash 散列表,哈希结构相对于字符串序列化缓存信息更加直观,并且在更新操作上更加便捷。哈希结构相对于字符串序列化缓存信息更加直观,并且在更新操作上更加便捷。

List 列表,在 Redis 中,可以队列表两端插⼊和弹出,还可以获取指定范围的元素列表、获取指定索引下的元素等,列表是⼀种⽐较灵活的数据结构,它可以充当栈和队列的⻆⾊。

Set用的比较多,redis的端口号通常是6379:

127.0.0.1:6379> set key1 xiaomeng1

OK

127.0.0.1:6379> set key2 xiaomeng2

OK

127.0.0.1:6379> set key3 xiaomeng3

OK

127.0.0.1:6379> set key4 xiaomeng4

OK

127.0.0.1:6379> set key5 xiaomeng5

OK

127.0.0.1:6379> set key6 xiaomeng6

OK

除此之外,还有三种特殊的数据类型:

Geo:Redis3.2推出的,地理位置定位,用于存储地理位置信息,并对存储的信息进行操作。

HyperLogLog:用来做基数统计算法的数据结构。

Bitmaps :用一个比特位来映射某个元素的状态,在Redis中,它的底层是基于字符串类型实现的,可以把bitmaps成作一个以比特位为单位的数组。

8,Redis常见的功能有哪些?

  1. 数据缓存功能

  2. 分布式锁的功能

  3. ⽀持数据持久化

  4. ⽀持事务

  5. ⽀持消息队列

9,Redis的优缺点有哪些

优点:

上面已经了列举了Redis的很多优点:

1,读写非常的快,提高网站的访问速度,Redis能读的速度是110000次/s,写的速度是81000次/s。强悍的一比。

2,持AOF和RDB两种持久化方式。

3,支持较多的数据结构类型,有String、hash、set、zset等等。

4,支持主从复制,主机可以自动的将数据同步到从机,从而进行读写分离。

5,支持AOF和RDB的持久化方式。

缺点:

任何的事物有优点,必然有缺点。Redis也不例外。

Redis 不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的IP才能恢复。

在这里插入图片描述

感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 27
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值