100道Redis面试题,这次面试稳了!

我把所有Java相关的面试题和答案都整理成了PDF,并且带书签目录,阅读起来非常方便

面试题及答案PDF下载https://www.hicxy.com/2645.html

面试题及答案PDF下载https://www.hicxy.com/2645.html

面试题及答案PDF下载https://www.hicxy.com/2645.html

1. Redis 有哪些适合的场景?

1、会话缓存(Session Cache)

最常用的一种使用 Redis 的情景是会话缓存(sessioncache),用 Redis 缓存会话比其他存储(如Memcached)的优势在于:Redis 提供持久化。当维护一个不是严格要求一致性的缓存时,如果用户的购物车信息全部丢失,大部分人都会不高兴的,现在,他们还会这样吗?

幸运的是,随着 Redis 这些年的改进,很容易找到怎么恰当的使用 Redis 来缓存会话的文档。甚至广为人知的商业平台 Magento 也提供 Redis 的插件。

2、全页缓存(FPC)

除基本的会话 token 之外,Redis 还提供很简便的 FPC 平台。回到一致性问题,即使重启了 Redis 实例,因为有磁盘的持久化,用户也不会看到页面加载速度的下降,这是一个极大改进,类似 PHP 本地FPC。

再次以 Magento 为例,Magento 提供一个插件来使用 Redis 作为全页缓存后端。

此外,对 WordPress 的用户来说,Pantheon 有一个非常好的插件 wp-redis,这个插件能帮助你以最快速度加载你曾浏览过的页面。

3、队列

Reids 在内存存储引擎领域的一大优点是提供 list 和 set 操作,这使得 Redis 能作为一个很好的消息队列平台来使用。Redis 作为队列使用的操作,就类似于本地程序语言(如 Python)对 list 的 push/pop操作。

如果你快速的在 Google 中搜索“Redis queues”,你马上就能找到大量的开源项目,这些项目的目的就是利用 Redis 创建非常好的后端工具,以满足各种队列需求。例如,Celery 有一个后台就是使用Redis 作为 broker,你可以从这里去查看。

4、排行榜/计数器

Redis 在内存中对数字进行递增或递减的操作实现的非常好。集合(Set)和有序集合(SortedSet)也使得我们在执行这些操作的时候变的非常简单,Redis 只是正好提供了这两种数据结构。

所以,我们要从排序集合中获取到排名最靠前的 10 个用户–我们称之为“user_scores”,我们只需要像下面一样执行即可:

当然,这是假定你是根据你用户的分数做递增的排序。如果你想返回用户及用户的分数,你需要这样执行:

ZRANGE user_scores 0 10 WITHSCORESAgora Games 就是一个很好的例子,用 Ruby 实现的,它的排行榜就是使用 Redis 来存储数据的,你可以在这里看到。

5、发布/订阅

最后(但肯定不是最不重要的)是 Redis 的发布/订阅功能。发布/订阅的使用场景确实非常多。我已看见人们在社交网络连接中使用,还可作为基于发布/订阅的脚本触发器,甚至用 Redis 的发布/订阅功能来建立聊天系统!

2. Redis 中的管道有什么用?

一次请求/响应服务器能实现处理新的请求即使旧的请求还未被响应,这样就可以将多个命令发送到服务器,而不用等待回复,最后在一个步骤中读取该答复。

这就是管道(pipelining),是一种几十年来广泛使用的技术。例如许多 POP3 协议已经实现支持这个功能,大大加快了从服务器下载新邮件的过程。

3. 我们知道通过expire来设置key 的过期时间,那么对过期的数据怎么处理呢?

除了缓存服务器自带的缓存失效策略之外(Redis默认的有6中策略可供选择),我们还可以根据具体的业务需求进行自定义的缓存淘汰,常见的策略有两种:

  1. 定时去清理过期的缓存;
  2. 当有用户请求过来时,再判断这个请求所用到的缓存是否过期,过期的话就去底层系统得到新数据并更新缓存。

两者各有优劣,第一种的缺点是维护大量缓存的key是比较麻烦的,第二种的缺点就是每次用户请求过来都要判断缓存失效,逻辑相对比较复杂!具体用哪种方案,大家可以根据自己的应用场景来权衡。

4. Redis 的数据淘汰策略有哪些

voltile-lru 从已经设置过期时间的数据集中挑选最近最少使用的数据淘汰

voltile-ttl 从已经设置过期时间的数据库集当中挑选将要过期的数据

voltile-random 从已经设置过期时间的数据集任意选择淘汰数据

allkeys-lru 从数据集中挑选最近最少使用的数据淘汰

allkeys-random 从数据集中任意选择淘汰的数据

no-eviction 禁止驱逐数据

5. Redis的过期键的删除策略

我们都知道,Redis是key-value数据库,我们可以设置Redis中缓存的key的过期时间。Redis的过期策略就是指当Redis中缓存的key过期了,Redis如何处理。

过期策略通常有以下三种:

  • 定时过期:每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除。该策略可以立即清除过期的数据,对内存很友好;但是会占用大量的CPU资源去处理过期的数据,从而影响缓存的响应时间和吞吐量。
  • 惰性过期:只有当访问一个key时,才会判断该key是否已过期,过期则清除。该策略可以最大化地节省CPU资源,却对内存非常不友好。极端情况可能出现大量的过期key没有再次被访问,从而不会被清除,占用大量内存。
  • 定期过期:每隔一定的时间,会扫描一定数量的数据库的expires字典中一定数量的key,并清除其中已过期的key。该策略是前两者的一个折中方案。通过调整定时扫描的时间间隔和每次扫描的限定耗时,可以在不同情况下使得CPU和内存资源达到最优的平衡效果。
    (expires字典会保存所有设置了过期时间的key的过期时间数据,其中,key是指向键空间中的某个键的指针,value是该键的毫秒精度的UNIX时间戳表示的过期时间。键空间是指该Redis集群中保存的所有键。)

Redis中同时使用了惰性过期和定期过期两种过期策略。

后面的问题,大家可以先自己独立思考一下。

另外我把所有Java相关的面试题和答案都整理出来了,给大家参考一下

面试题及答案PDF下载https://www.hicxy.com/2645.html

面试题及答案PDF下载https://www.hicxy.com/2645.html

面试题及答案PDF下载https://www.hicxy.com/2645.html

6. Redis如何做内存优化?

7. 为什么要用 redis/为什么要用缓存

8. Redis有哪些适合的场景?

9. Redis 如何实现延时队列

10. Redis中数据库默认是多少个db即作用?

11. Redis 集群的主从复制模型是怎样的?

12. Redis 集群如何选择数据库?

13. 使用方式

14. Redis事务支持隔离性吗

15. Redis 常见的性能问题和解决方案

16. Redis 集群方案应该怎么做?都有哪些方案?

17. Redis 常见性能问题和解决方案?

18. Redis 为什么是单线程的

19. 惰性删除策略

20. 什么是缓存穿透?如何避免?什么是缓存雪崩?何如避免?

21. Redis key的过期时间和永久有效分别怎么设置?

22. 锁互斥机制

23. Redis的过期策略以及内存淘汰机制

24. Redis 集群之间是如何复制的?

25. 讲解下Redis线程模型

26. Redis分区有什么缺点?

27. Redis 如何做内存优化?

28. Redis的数据类型,以及每种数据类型的使用场景

29. 修改配置不重启Redis会实时生效吗?

30. 怎么理解 Redis 事务?

31. Redis的内存占用情况怎么样?

32. Redis 到底是怎么实现“附近的人”

33. Redis 的持久化机制是什么?各自的优缺点?

34. Redis 集群会有写操作丢失吗?为什么?

35. 使用 redis 如何设计分布式锁?说一下实现思路?使用 zk 可以吗?如何实现?这两种有什么区别?

36. 使用redis有哪些好处?

37. 什么是 Redis?简述它的优缺点?

38. Redis key 的过期时间和永久有效分别怎么设置?

39. Redis事务

40. Redis 官方为什么不提供 Windows 版本?

41. 为什么要做Redis分区?

42. Reids三种不同删除策略

43. MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中的数据都是热点数据?

44. Redis事务保证原子性吗,支持回滚吗

45. 在选择缓存时,什么时候选择 redis,什么时候选择 memcached?

46. Reids的特点

47. 缓存与数据库不一致怎么办

48. Redis 主要消耗什么物理资源?

49. Redis持久化数据和缓存怎么做扩容?

50. Redis有哪些优缺点

51. Redis常用管理命令

52. Redis与其他key-value存储有什么不同?

53. Redis 集群方案应该怎么做?都有哪些方案?

54. 一个Redis实例最多能存放多少的keys?List、Set、Sorted Set他们最多能存放多少元素?

55. Redis 回收进程如何工作的?

56. 如何解决 Redis 的并发竞争 Key 问题

57. Redis 内部结构

58. Redis 事务相关的命令有哪几个?

59. 分布式Redis是前期做还是后期规模上来了再做好?为什么?

60. 缓存穿透、缓存击穿、缓存雪崩解决方案?

61. 你知道有哪些Redis分区实现方案?

62. 为什么Redis的操作是原子性的,怎么保证原子性的?

63. redis 和 memcached 什么区别?为什么高并发下有时单线程的 redis 比多线程的memcached 效率要高?

64. Redis事务的概念

65. 如何选择合适的持久化方式?

66. Redis是单线程的,如何提高多核CPU的利用率?

67. Redis 集群方案什么情况下会导致整个集群不可用?

68. Redis提供了哪几种持久化方式?

69. 为什么redis需要把所有数据放到内存中?

70. 使用 Redis 做过异步队列吗,是如何实现的

71. Redis为什么这么快

72. 缓存雪崩和缓存穿透问题解决方案

73. 如何保证缓存与数据库双写时的数据一致性?

74. Redis 集群最大节点个数是多少?

75. Redis 支持哪几种数据类型?

76. 定时删除策略

77. 知道 redis 的持久化吗?底层如何实现的?有什么优点缺点?

78. 单线程的redis为什么这么快

79. 生产环境中的 redis 是怎么部署的?

80. 为什么 Redis 需要把所有数据放到内存中?

81. 什么是Redis持久化?

82. 请用Redis和任意语言实现一段恶意登录保护的代码,限制1小时内每用户Id最多只能登录5次。具体登录函数或功能用空函数即可,不用详细写出。

83. redis 常见数据结构以及使用场景分析

84. 一个字符串类型的值能存储最大容量是多少?

85. Redis事务其他实现

86. Redis事务的三个阶段

87. 加锁机制

88. redis 过期策略都有哪些?LRU 算法知道吗?

89. 定期删除策略

90. 都有哪些办法可以降低Redis的内存使用情况呢?

91. 说说 Redis 哈希槽的概念?

92. watch dog 自动延期机制

93. 如何选择合适的持久化方式

94. RDB和AOF的优缺点

95. Redis 持久化机制(怎么保证 redis 挂掉之后再重启数据可以进行恢复)

96. Redis的内存用完了会发生什么?

97. Redis 有哪几种数据淘汰策略?

98. Redis 与 memcached 相比有哪些优势?

99. 事务管理(ACID)概述

100. 使用过 Redis 做异步队列么,你是怎么用的?有什么缺点?

101. 对于大量的请求怎么样处理

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,142评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,298评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,068评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,081评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,099评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,071评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,990评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,832评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,274评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,488评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,649评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,378评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,979评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,625评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,643评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,545评论 2 352

推荐阅读更多精彩内容