面试惊魂记:我被面试官打了,只因为Redis我是这样回答的

前言

八月已近尾声,面对即将到来的九月、十月你是否已经准备充分,做好了迎接准备,都说一年有两个黄金季,一个是已经过去的金三银四,你是否抓住机会找到了一份心仪的工作,如果没有,那么没关系金九银十马上来了,这次就要准备充足,不要再让机会在眼前溜走啦。

说到面试,那就要好好准备下,不准备充分的面试,完全是浪费时间,更是对自己的不负责。那么面试的知识点是哪些呢?

经过大多数粉丝面试过后的反馈,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)较短的键,使得新添加的数据有空间存放。

更多的资源私信回复【架构】即可获取

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190827A0KKWO00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券