Redis必备面试题《基础篇》
Date:2019-11-12
读前思考:
面试官会问什么样的问题?
所问的问题背后真实的套路是什么?
喜欢问Redis哪些问题?
如何顺畅回答面试问的问题?吊打面试官。
1、什么是Redis?
Redis的全称是Remote Dictionary Server,Redis本质上是一个key_value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据刷新到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过10万次的读写操作,是已知性能最快的Key-Value DB。
2、Redis相比memcached有哪些优势,区别?
首先从redis的好处说起,
(1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)
(2) 支持丰富数据类型,支持string,list,set,sorted set,hash
(3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行
(4) 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除
Redis相比memcached的优势:
(1) memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型
(2) redis的速度比memcached快很多
(3) redis可以持久化其数据,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用;
(4)Redis支持数据的备份,即master-slave模式的数据备份
内存使用效率对比:
2.memcached使用预分配的内存池的方式,且在内存仍然有很大空间时,新的数据也可能会被剔除,而redis使用现场申请内存的方式来存储数据,不会剔除任何非临时数据 redis更适合作为存储而不是cache。
1)存储方式
Memecache把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小。 Redis有部份存在硬盘上,这样能保证数据的持久性。
2)数据支持类型
Memcache对数据类型支持相对简单。
Redis有复杂的数据类型。
3)使用底层模型不同
它们之间底层实现方式 以及与客户端之间通信的应用协议不一样。Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。
4)value大小
redis最大可以达到1GB,而memcache只有1MB
3、Redis支持哪几种数据类型?
4、Redis的缓存失效策略和主键失效机制?
5、Redis的全称是什么?
6、Redis有哪几种数据淘汰策略?
7、Redis官方为什么不提供Windows版本?
8、一个字符串类型的值能存储最大容量是多少?
9、为什么Redis需要把所有数据放到内存中?
10、Redis集群方案应该怎么做?都有哪些方案?
11、Redis集群方案什么情况下会导致整个集群不可用?
12、MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?
redis内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。
13、Redis有哪些适合的场景?
14、Redis支持的Java客户端都有哪些?官方推荐用哪个?
15、Redis和Redisson有什么关系?
16、Jedis与Redisson对比有什么优缺点?
17、Redis如何设置密码及验证密码?
18、说说Redis哈希槽的概念?
19、Redis集群的主从复制模型是怎样的?
20、Redis集群会有写操作丢失吗?为什么?
21、Redis集群之间是如何复制的?
22、Redis集群最大节点个数是多少?
23、Redis集群如何选择数据库?
24、怎么测试Redis的连通性?
25、Redis中的管道有什么用?
26、怎么理解Redis事务?
27、Redis事务相关的命令有哪几个?
28、Redis key的过期时间和永久有效分别怎么设置?
29、Redis如何做内存优化?
30、Redis回收进程如何工作的?
31、Redis回收使用的是什么算法?
32、Redis如何做大量数据插入?
33、为什么要做Redis分区?
34、你知道有哪些Redis分区实现方案?
35、Redis分区有什么缺点?
36、Redis持久化数据和缓存怎么做扩容?redis持久化的几种方式? Redis如何做持久化的?
37、分布式Redis是前期做还是后期规模上来了再做好?为什么?
38、Twemproxy是什么?
39、支持一致性哈希的客户端有哪些?
40、Redis与其他key-value存储有什么不同?
41、Redis的内存占用情况怎么样?
42、都有哪些办法可以降低Redis的内存使用情况呢?
43、查看Redis使用情况及状态信息用什么命令?
info
44、Redis的内存用完了会发生什么?
45、Redis主要消耗什么物理资源?
46、Redis官方为什么不提供Windows版本?
47、为什么Redis需要把所有数据放到内存中?
Redis为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘。所以redis具有快速和数据持久化的特征。如果不将数据放在内存中,磁盘I/O速度为严重影响redis的性能。在内存越来越便宜的今天,redis将会越来越受欢迎。 如果设置了最大使用的内存,则数据已有记录数达到内存限值后不能继续插入新值。
48、Redis集群方案应该怎么做?都有哪些方案?
49、Redis集群方案什么情况下会导致整个集群不可用?
50、Redis支持的Java客户端都有哪些?官方推荐用哪个?
51、Redis和Redisson有什么关系?
52、Jedis与Redisson对比有什么优缺点?
53、说说Redis哈希槽的概念?
54、Redis集群的主从复制模型是怎样的?
55、Redis集群会有写操作丢失吗?为什么?
Redis并不能保证数据的强一致性,这意味这在实际中集群在特定的条件下可能会丢失写操作。
56、Redis集群最大节点个数是多少?
57、Redis集群如何选择数据库?
58、怎么理解Redis事务?
事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。
事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。
59、Redis如何做内存优化?
60、Redis回收进程如何工作的?
61、 使用过Redis分布式锁么,它是什么回事?
62、 假如Redis里面有1亿个key,其中有10w个key是以某个固定的已知的前缀开头的,如果将它们全部找出来?
63、 如果这个redis正在给线上的业务提供服务,那使用keys指令会有什么问题?
64、 使用过Redis做异步队列么,你是怎么用的?
65、 redis如何实现延时队列?
66、 如果有大量的key需要设置同一时间过期,一般需要注意什么
67、 Pipeline有什么好处,为什么要用pipeline?
68、 Redis的同步机制了解么?
69、 是否使用过Redis集群,集群的原理是什么?
70、 为什么redis需要把所有数据放到内存中?
71、 Redis为什么是单进程单线程的?
72、 redis的并发竞争问题如何解决?
73、 redis事物的了解CAS(check-and-set 操作实现乐观锁 )?
74、 WATCH命令和基于CAS的乐观锁?
Redis必备面试题《基础篇》的更多相关文章
- 生产消费者模式与python+redis实例运用(基础篇)
根据这个图,我们举个简单的例子:假如你去某个餐厅吃饭,点了很多菜,厨师要一个一个菜的做,一个厨师不可能同时做出所有你点的菜,于是你有两个选择:第一个,厨师把所有菜都上齐了,你才开始吃:还有一个选择,做 ...
- [ Java面试题 ]基础篇之一
1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致. 2.Java有 ...
- Oracle面试题(基础篇)
1. Oracle跟SQL Server 2005的区别? 宏观上: 1). 最大的区别在于平台,oracle可以运行在不同的平台上,sql server只能运行在windows平台上,由于windo ...
- Redis学习笔记之基础篇
Redis是一款开源的日志型key-value数据库,目前主要用作缓存服务器使用. Redis官方并没有提供windows版本的服务器,不过微软官方开发了基于Windows的Redis服务器Micro ...
- Java面试题-基础篇三(干货)
这些JAVA基础题确定都会了吗? 31.String s = new String("xyz");创建了几个StringObject?是否可以继承String类? 两个或一个都有可 ...
- Java面试题---基础篇
经常阅读一些牛人的基础博以及相关个人经历,你才发现自己真的不够努力,人生路漫漫,希望本人以及看客能走出一条自己不后悔的人生路,骚年 加油!!! 回归正题 一 java基础知识点 1)java面向对 ...
- [ Java面试题 ]基础篇之二
1.String s = new String("xyz");创建了几个StringObject?是否可以继承String类? 两个或一个都有可能,"xyz"对 ...
- python面试题——基础篇(80题)
1.为什么学习Python? Python是一门优秀的综合语言, Python的宗旨是简明.优雅.强大,在人工智能.云计算.金融分析.大数据开发.WEB开发.自动化运维.测试等方向应用广泛 2.通过什 ...
- Java面试题-基础篇二(干货)
11.是否可以从一个static方法内部发出对非static方法的调用? 不可以.因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用 ...
随机推荐
- .NET北京俱乐部,技术的饕餮盛宴,不枉此行
在19年年尾,我们相约于.NET北京俱乐部 DNT精英论坛暨.NET北京俱乐部是由资深.NET专家和社区活跃分子发起的技术论坛,以“分享.成长.合作.共赢”为原则,致力于打造一个领先的技术分享平台和成 ...
- 关于sqlmapapi一点记录
关于sqlmapapi自己练习的还是很少 今天看见freebuf上师傅的分享的内容 自己练习了一下 来自: https://www.freebuf.com/articles/web/204875.ht ...
- 就改了get,却不让我set?——Java内省机制的神奇行为举止一例
[相关类库]org.apache.commons.beanutils.BeanUtils,提供对Java反射和自省API的包装,其中底层使用到了Java的内省方法.[内省的一般应用形式]通过类Intr ...
- windows 抓hash获取管理员密码
webshell 找能执行权限的目录上传 C:\Windows\System32\config\sam 内有windows 密码 利用工具把密码抓出来 samcopy 直接抓取 GetHASHES.e ...
- 图像配准SIFT
(一)图像特征匹配--SIFT 1.1 SIFT背景简介 SIFT算法是David Lowe在1999年提出的局部特征描述子,并在2004年深入发展和完善. SIFT算法是在尺度空间进行特征检测并确定 ...
- 谢宝友: 手把手教你给Linux内核发patch
本文系转载,著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者: 谢宝友 来源: 微信公众号 linux阅码场 (id: linuxdev) 本文简介 本文一步一 ...
- Rancher 2.3.2 Stable!Istio UI已经GA!生产可用!
2019年10月9日,Rancher 2.3正式发布,这是Rancher Labs迄今为止最重要的产品版本.Rancher 2.3是业界首个GA支持Windows容器的Kubernetes管理平台,并 ...
- Element filtername is not allowed here-web.xml version="3.0"-intellij idea
Element filtername is not allowed here-web.xml version="3.0"-intellij idea Intellij IDEA 报 ...
- 设计模式(十三)Visitor模式
Visitor模式可以用来把数据结构与处理分离开.通俗来说就是编写一个访问者类来访问数据结构中的元素,并把对各元素的处理交给访问者类.这样,当需要增加新的处理时,只需要编写新的访问者,然后让数据结构可 ...
- 四元数(Quaternion)
从应用角度说一下unity Quaternion,Quaternion是四元数,百度相关资料可能找到的都是一些大牛给你搞个矩阵云云,给你讲解四元数.在此只是从应用角度讲一讲.最简单理解四元数对应一个向 ...