面试惊魂记:我被面试官打了,只因为Redis我是这样回答的
欢迎关注专栏:Java架构技术进阶。里面有大量batj面试题集锦,还有各种技术分享,如有好文章也欢迎投稿哦。 微信公众号:慕容千语的架构笔记。欢迎关注一起进步。
前言
八月已近尾声,面对即将到来的九月、十月你是否已经准备充分,做好了迎接准备,都说一年有两个黄金季,一个是已经过去的金三银四,你是否抓住机会找到了一份心仪的工作,如果没有,那么没关系金九银十马上来了,这次就要准备充足,不要再让机会在眼前溜走啦。
说到面试,那就要好好准备下,不准备充分的面试,完全是浪费时间,更是对自己的不负责。那么面试的知识点是哪些呢?
经过大多数粉丝面试过后的反馈,Java面试重点如下:
数据结构与算法,JVM内存结构、垃圾回收器、回收算法、GC、并发编程相关(多线程、线程池等)、NIO/BIO、性能优化、设计模式、Spring框架:分布式相关:Redis、一致Hash算法、分布式存储、负载均衡等,微服务以及Docker容器等。在这由于文字很多,我总结了java面试所涉及到的常问范围及常问面试题免费分享给大家,文末有获取地址!
今天下面就列举的是Redis的相关面试问题,看看你是否能答出来。
Redis高级面试专题
- 什么是 Redis?简述它的优缺点?
- Redis与memcached相比有哪些优势?
- Redis支持哪几种数据类型?
- Redis主要消耗什么物理资源?
- Redis有哪几种数据淘汰策略?
- Redis官方为什么不提供Windows版本?
- 一个字符串类型的值能存储最大容量是多少?
- 为什么Redis需要把所有数据放到内存中?
- Redis集群方案应该怎么做?都有哪些方案?
- Redis集群方案什么情况下会导致整个集群不可用?
- MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?
- Redis有哪些适合的场景?
- Redis支持的Java客户端都有哪些?官方推荐用哪个?
- Redis和Redisson有什么关系?
- Jedis与Redisson对比有什么优缺点?
- 说说Redis哈希槽的概念?
- Redis集群的主从复制模型是怎样的?
- Redis集群会有写操作丢失吗?为什么?
- Redis集群之间是如何复制的?
- Redis集群最大节点个数是多少?
- Redis集群如何选择数据库?
- Redis中的管道有什么用?
- 怎么理解Redis事务?
- Redis事务相关的命令有哪几个?
- Rediskey的过期时间和永久有效分别怎么设置?
- Redis如何做内存优化?
- Redis回收进程如何工作的?
- 加锁机制
- 锁互斥机制
- watchdog自动延期机制
- 可重入加锁机制
- 释放锁机制
- 上述Redis分布式锁的缺点
- 使用过Redis分布式锁么,它是怎么实现的?
- 使用过Redis做异步队列么,你是怎么用的?有什么缺点?
- 什么是缓存穿透?如何避免?什么是缓存雪崩?何如避免?
面试题答案
1、什么是 Redis?简述它的优缺点?
Redis的全称是:RemoteDictionary.Server,本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。
因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过10万次读写操作,是已知性能最快的Key-ValueDB。
Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能。比方说用他的List来做FIFO双向链表,实现一个轻量级的高性能消息队列服务,用他的Set可以做高性能的tag系统等等。
另外Redis也可以对存入的Key-Value设置expire时间,因此也可以被当作一个功能加强版的memcached来用。Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。
2、Redis与memcached相比有哪些优势?
- memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型
- redis的速度比memcached快很多redis的速度比memcached快很多
- redis可以持久化其数据redis可以持久化其数据
3、Redis支持哪几种数据类型?
String、List、Set、SortedSet、hashes
4、Redis主要消耗什么物理资源?
内存。
5、Redis有哪几种数据淘汰策略?
- noeviction:返回错误当内存限制达到,并且客户端尝试执行会让更多内存被使用的命令。
- allkeys-lru:尝试回收最少使用的键(LRU),使得新添加的数据有空间存放。
- volatile-lru:尝试回收最少使用的键(LRU),但仅限于在过期集合的键,使得新添加的数据有空间存放。
- allkeys-random:回收随机的键使得新添加的数据有空间存放。
- volatile-random:回收随机的键使得新添加的数据有空间存放,但仅限于在过期集合的键。
- volatile-ttl:回收在过期集合的键,并且优先回收存活时间(TTL)较短的键,使得新添加的数据有空间存放。
由于篇幅限制,太长看下去会很乏味,也会影响阅读体验,下面展现将以图片形式展示。获取原文件以及更多资源请关注转发分享后,后台私信回复【Redis】获取原文件领取地址。
对文章中学习脑图感兴趣的可以 关注 转发后私信【架构】获取资源地址。还有更多面试题整理中,可以一并获取。
欢迎关注专栏:Java架构技术进阶。里面有大量batj面试题集锦,还有各种技术分享,如有好文章也欢迎投稿哦。 微信公众号:慕容千语的架构笔记。欢迎关注一起进步。