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. Redis 复制过程详解

    Redis 的复制功能分为同步( sync )和命令传播( command propagate )两个步骤: 同步用于将从服务器的数据库状态更新至主服务器当前所处的数据库状态. 命令传播则用于在主服务 ...

  2. vue事件获取当前对象

    一.事件传参 如点击事件 <div @click='click'> <div> <div @click='click_1('msg')'> <div> ...

  3. PHP array_reverse

    1.函数的作用:将数组中的元素顺序反转 2.函数的参数: @params array $array 需要反转顺序的数组 @params $preversed_key  数值索引是否保持不变,非数值索引 ...

  4. [LUOGU3413] SAC#1 - 萌数

    题目背景 本题由世界上最蒟蒻最辣鸡最撒比的SOL提供. 寂月城网站是完美信息教室的官网.地址:http://191.101.11.174/mgzd . 题目描述 辣鸡蒟蒻SOL是一个傻逼,他居然觉得数 ...

  5. 基于canvas实现钟表

    原理说明 1.通过arc方法实现钟表外环: 2.通过line实现钟表时针,分针,秒针和刻度标志的绘制,基于save和restore方法旋转画布绘制不同角度的指针: 3.通过font方法实现在画布上绘制 ...

  6. if循环判断

    if循环判断 if-else循环的语法格式 if 逻辑判断句: ​ 代码块 # 缩进表示所属关系 else 逻辑判断句: ​ 代码块 if 和elif同时使用来做多层判断 if 逻辑判断式: 代码块 ...

  7. [Abp vNext 源码分析] - 12. 后台作业与后台工作者

    一.简要说明 文章信息: 基于的 ABP vNext 版本:1.0.0 创作日期:2019 年 10 月 24 日晚 更新日期:暂无 ABP vNext 提供了后台工作者和后台作业的支持,基本实现与原 ...

  8. netty中Pipeline的ChannelHandler执行顺序案例详解

    一.netty的Pipeline模型 netty的Pipeline模型用的是责任链设计模式,当boss线程监控到绑定端口上有accept事件,此时会为该socket连接实例化Pipeline,并将In ...

  9. Feign服务调用请求方式及参数总结

    前言 最近做微服务架构的项目,在用feign来进行服务间的调用.在互调的过程中,难免出现问题,根据错误总结了一下,主要是请求方式的错误和接参数的错误造成的.在此进行一下总结记录.以下通过分为三种情况说 ...

  10. web开发资源导航

    实用工具 前端在线工具 兼容性速查 html5兼容性查询 node-es6支持度 es6兼容性表查询 设备es6支持度 游览器H5支持度 浏览器内核检测工具 手机设备信息检测 浏览器市场份额 文档手册 ...