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模式的数据备份

 内存使用效率对比:

    1.简单的key-value存储,memcached的内存利用率更高,而如果redis采用hash结构存储key-value,内存利用率会远高于memcached,因为hash组合了压缩方式;
    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必备面试题《基础篇》的更多相关文章

  1. 生产消费者模式与python+redis实例运用(基础篇)

    根据这个图,我们举个简单的例子:假如你去某个餐厅吃饭,点了很多菜,厨师要一个一个菜的做,一个厨师不可能同时做出所有你点的菜,于是你有两个选择:第一个,厨师把所有菜都上齐了,你才开始吃:还有一个选择,做 ...

  2. [ Java面试题 ]基础篇之一

    1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致. 2.Java有 ...

  3. Oracle面试题(基础篇)

    1. Oracle跟SQL Server 2005的区别? 宏观上: 1). 最大的区别在于平台,oracle可以运行在不同的平台上,sql server只能运行在windows平台上,由于windo ...

  4. Redis学习笔记之基础篇

    Redis是一款开源的日志型key-value数据库,目前主要用作缓存服务器使用. Redis官方并没有提供windows版本的服务器,不过微软官方开发了基于Windows的Redis服务器Micro ...

  5. Java面试题-基础篇三(干货)

    这些JAVA基础题确定都会了吗? 31.String s = new String("xyz");创建了几个StringObject?是否可以继承String类? 两个或一个都有可 ...

  6. Java面试题---基础篇

    经常阅读一些牛人的基础博以及相关个人经历,你才发现自己真的不够努力,人生路漫漫,希望本人以及看客能走出一条自己不后悔的人生路,骚年  加油!!! 回归正题 一  java基础知识点 1)java面向对 ...

  7. [ Java面试题 ]基础篇之二

    1.String s = new String("xyz");创建了几个StringObject?是否可以继承String类? 两个或一个都有可能,"xyz"对 ...

  8. python面试题——基础篇(80题)

    1.为什么学习Python? Python是一门优秀的综合语言, Python的宗旨是简明.优雅.强大,在人工智能.云计算.金融分析.大数据开发.WEB开发.自动化运维.测试等方向应用广泛 2.通过什 ...

  9. Java面试题-基础篇二(干货)

    11.是否可以从一个static方法内部发出对非static方法的调用? 不可以.因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用 ...

随机推荐

  1. maven在线自动更新太慢怎么办?

    使用IDEA和Eclipse开发maven项目时,maven在添加一项新的依赖时,如果发现本地仓库没有,就会向位于国外服务器的中央仓库下载.如果所处网络没有翻墙,下载速度会慢到你想原地爆炸. 这个时候 ...

  2. 《Java编程思想》——初始化与清理(一)读书笔记

    第一次写这个,这一章都用word写的,结果复制过来没图片....只能上传word文档了.以后改用markdown比较好 word文档地址:<Java编程思想>--初始化与清理(一)读书笔记

  3. MySQL逻辑架构、SQL加载执行顺序、七种JOIN模式图解

    逻辑架构   存储引擎 查看当前安装的mysql提供的存储引擎 查看当前mysql默认的存储引擎 MyISAM和InnoDB SQL加载执行顺序 sql书写顺序 mysql解析器执行的顺序  考点:m ...

  4. C# MQTT mqtt客户端,发布订阅消息

    如果想用C#来和mqtt的服务器进行数据交互的话,有一个常见的选择,那就是 MQTTNET 地址如下:https://github.com/chkr1011/MQTTnet 那个库在最近几个版本升级的 ...

  5. 【前端词典】几个有益的 CSS 小知识

    今天偷个懒,不长篇大论,分享几个你可能不知道的 CSS 小知识. 样式的顺序 CSS 代码:   HTML 代码:   记得之前这是一道比较火的 CSS 考题,当时好像是有不少的人答错(30% 以上) ...

  6. 设计糟糕的 RESTful API 就是在浪费时间!

    现在微服务真是火的一塌糊涂.大街小巷,逢人必谈微服务,各路大神纷纷忙着把自家的单体服务拆解成多个Web微小服务.而作为微服务之间通信的桥梁,Web API的设计就显得非常重要. HTTP是目前互联网使 ...

  7. CSP-S 初赛内容整理

    图灵奖 艾伦·麦席森·图灵(Alan Mathison Turing,1912-1954)1966 共计70名科学家获此殊荣,华人仅有1位,他是2000年姚期智. 解释型语言 Python / Jav ...

  8. [JZOJ5456]【NOIP2017提高A组冲刺11.6】奇怪的队列

    Description nodgd的粉丝太多了,每天都会有很多人排队要签名.今天有

  9. 算法---ALGO-3 Java K好数 蓝桥杯

    package Main; import java.io.InputStream; import java.util.Scanner; public class Main { public stati ...

  10. 在VS2013下配置BOOST库

    1.安装Boost库 (1).首先打开Boost的官网(http://www.boost.org/),找到下载位置,如下图中红框所示,此时最新的版本是1.64.0: (2).点击进入下载页面,选择你需 ...