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

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

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

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

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

缓存穿透:

指查询一个一定不存在的数据,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到 DB 去查询,可能导致 DB 挂掉。

解决方案:

1.查询返回的数据为空,仍把这个空结果进行缓存,但过期时间会比较短;

2.布隆过滤器:将所有可能存在的数据哈希到一个足够大的 bitmap 中,一个一定不存在的数据会被这个 bitmap 拦截掉,从而避免了对 DB 的查询。

缓存击穿:

对于设置了过期时间的 key,缓存在某个时间点过期的时候,恰好这时间点对这个 Key 有大量的并发请求过来,这些请求发现缓存过期一般都会从后端 DB 加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把 DB 压垮。

解决方案:

1.使用互斥锁:当缓存失效时,不立即去 load db,先使用如 Redis 的 setnx 去设置一个互斥锁,当操作成功返回时再进行 load db 的操作并回设缓存,否则重试 get 缓存的方法。

2.永远不过期:物理不过期,但逻辑过期(后台异步线程去刷新)。

缓存雪崩:

设置缓存时采用了相同的过期时间,导致缓存在某一时刻同时失效,请求全部转发到 DB,DB 瞬时压力过重雪崩。与缓存击穿的区别:雪崩是很多 key,击穿是某一个key 缓存。

解决方案:

将缓存失效时间分散开,比如可以在原有的失效时间基础上增加一个随机值,比如 1-5 分钟随机,这样每一个缓存的过期时间的重复率就会降低,就很难引发集体失效的事件。

2. 定期删除策略

由于定时删除会占用太多cpu时间,影响服务器的响应时间和吞吐量以及惰性删除浪费太多内存,有内存泄露的危险,所以出现一种整合和折中这两种策略的定期删除策略。

  1. 定期删除策略每隔一段时间执行一次删除过期键操作,并通过限制删除操作执行的时长和频率来减少删除操作对CPU时间的影响。
  2. 定时删除策略有效地减少了因为过期键带来的内存浪费。

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

你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题?

一般来说,就是如果你的系统不是严格要求缓存+数据库必须一致性的话,缓存可以稍微的跟数据库偶尔有不一致的情况,最好不要做这个方案,读请求和写请求串行化,串到一个内存队列里去,这样就可以保证一定不会出现不一致的情况

串行化之后,就会导致系统的吞吐量会大幅度的降低,用比正常情况下多几倍的机器去支撑线上的一个请求。

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

对于Redis而言,命令的原子性指的是:一个操作的不可以再分,操作要么执行,要么不执行。

Redis的操作之所以是原子性的,是因为Redis是单线程的。(Redis新版本已经引入多线程,这里基于旧版本的Redis)

Redis本身提供的所有API都是原子操作,Redis中的事务其实是要保证批量操作的原子性。

多个命令在并发中也是原子性的吗?

不一定, 将get和set改成单命令操作,incr 。使用Redis的事务,或者使用Redis+Lua==的方式实现.

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

MULTI、EXEC、DISCARD、WATCH、UNWATCH

**1、**DISCARD用来取消一个事务;

**2、**EXEC用来执行一个事务;

**3、**MULTI用来组装一个事务;

**4、**WATCH用来监视一些key,一旦这些key在事务执行之前被改变,则取消事务的执行

**5、**WATCH取消 WATCH 命令对所有 key 的监视。

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

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

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

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

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

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

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

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

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

10. 怎么理解 Redis 事务?

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

12. Redis事务的概念

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

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

15. Redis 内部结构

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

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

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

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

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

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

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

23. Redis 如何做内存优化?

24. Redis有哪些优缺点

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

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

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

28. Redis 为什么是单线程的

29. Reids的特点

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

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

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

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

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

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

36. Redis为什么这么快

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

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

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

40. 为什么要做Redis分区?

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

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

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

44. Redis事务支持隔离性吗

45. 加锁机制

46. Redis事务

47. 惰性删除策略

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

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

50. Redis事务其他实现

51. Reids三种不同删除策略

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

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

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

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

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

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

58. Redis事务的三个阶段

59. watch dog 自动延期机制

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

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

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

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

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

65. 使用方式

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

67. Redis 如何实现延时队列

68. Redis如何做内存优化?

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

70. 事务管理(ACID)概述

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

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

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

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

75. 锁互斥机制

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

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

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

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

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

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

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

83. RDB和AOF的优缺点

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

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

86. Redis常用管理命令

87. 讲解下Redis线程模型

88. 定时删除策略

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

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

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

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

93. 什么是Redis持久化?

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

95. Redis分区有什么缺点?

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

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

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

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

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

101. 使用redis有哪些好处?

精选100道Redis面试题,附答案相关推荐

  1. 100道Redis面试题及答案(2021最新)

    在网上看到有关Redis的120道面试题,但是没有给出答案,之前我也在寻找这份Redis面试题的答案,今天特地把答案分享出来. 花了大量时间整理了这套Redis面试题及答案,希望对大家有帮助哈~ 弄明 ...

  2. 建议收藏 100 道 Linux 面试题 附答案

    关注公众号"Java后端技术全栈" 回复"000"获取程序员必备电子书 大家好,我是老田,今天我给大家分享100道Linux面试题. 本文一共 3万多字,分别从 ...

  3. 100 道 JavaScript 面试题及答案(下)

    编辑整理 | 杨小爱 我们接上昨天的上篇内容<100 道 JavaScript 面试题及答案(上)>,今天我们开启下篇,把后面的50道题认真看完. 现在,我们就开始吧. 51. promi ...

  4. 100 道 JavaScript 面试题及答案汇总(下)

    英文 | https://betterprogramming.pub/100-javascript-interview-questions-58e22e30f7f1 翻译 | 杨小二 接上篇< ...

  5. 110道 Redis面试题及答案(最新整理)

    最新Redis面试题及答案[附答案解析]Redis面试题及答案,Redis最新面试题及答案,Redis面试题新答案已经全部更新完了,有些答案是自己总结的,也有些答案是在网上搜集整理的.这些答案难免会存 ...

  6. 100道 Dubbo面试题及答案(2021最新)

    Redis面试题及答案[2021最新版]Dubbo面试题大全(2021版),发现网上很多Dubbo面试题都没有答案,所以花了很长时间搜集,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小 ...

  7. 100道JavaScript 面试题和答案(下)

    英文 | https://betterprogramming.pub/100-javascript-interview-questions-58e22e30f7f1 翻译 | 杨小二 接上篇<1 ...

  8. 计算机应用基础选择题100道,300道计算机应用基础试题(附答案)

    计算机应用基础试题及答案 (注: 200道选择,100道填空) 一.选择题: 1. 在计算机应用中,"计算机辅助设计"的英文缩写为___________. A. CAD B. CA ...

  9. 中央电大网考计算机基础试题,电大网考300道计算机应用基础试题(附答案)

    计算机应用基础试题及答案 (注: 200道选择,100道填空) 一.选择题: 1. 在计算机应用中,"计算机辅助设计"的英文缩写为___________. A. CAD B. CA ...

最新文章

  1. python3中format方法_python3 自定制format格式化,很多很多的内置方法。。。。。。。。。。。...
  2. 谷歌启动搜索引擎新功能 网页Flash内容即时预览
  3. 服务器php 启动命令_服务端的cli方式运行
  4. 将字符串String str= “abc god 中国 java“ 反转每个单词 结果: “cba dog 国中
  5. 别扭!iPhone XI Max渲染图曝光:后置超大方形3摄
  6. quartz获取缓存中所有运行中的Job
  7. C#—Dev XtraTabControl操作总结如动态增加Tab和关闭选项卡方法等
  8. python入门程序例子_Python 爬虫从入门到放弃(11 个有趣的 Python 爬虫例子)
  9. es6中一些基本的使用方法
  10. 粒子群算法优化BP和Elman神经网络-matlab源码
  11. CSS 函数摘抄笔记1207
  12. python编程-----利用爬虫获取自如房间信息(三)
  13. 使用函数调用方式解决:输入三个正整数a,b,n,求a/b精确到小数后第n位。
  14. UML知识点总结(一)
  15. 【Linux】SWAP 深度解读(必须收藏)
  16. 【网络攻防CTF】Crypto 密码学 python循环多次base64解码题目(保姆级图文)
  17. 17 -Flask构建弹幕微电影网站- 电影播放及评论弹幕收藏实现
  18. oracle月末才执行,oracle 月初月末的时间处理
  19. edit类型 layui_Layer types described(图层类型描述)
  20. HFSS学习笔记——T型波导

热门文章

  1. SLAM与深度学习融合的研究现状总结
  2. SEED-LABS Firewall Exploration Lab
  3. 使用JDBC连接数据库的几种方法
  4. Spring cloud nacos注册中心 seata分布式事务
  5. 调用百度API自动生成春联
  6. 阿里OceanBase破茧成蝶 跃升DB界宠儿
  7. RSN Informatioon Element
  8. mysql数据库创建一个点餐系统用户表
  9. mysql ssdb_SSDB安装
  10. 基于深度学习的目标检测和改进的监控视频异常检测