一线互联网公司面试真题合集Redis高频面试题 - 2

VIP免费
2024-12-10 1 0 944.65KB 18 页 5.9玖币
侵权投诉
Redis 高频面试题及答案
目录
1Redis 持久化机制 ........................................................................................................................................1
2、缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 ................................................2
一、缓存雪崩 ..............................................................................................................................................2
二、缓存穿透 ..............................................................................................................................................3
三、缓存预热 ..............................................................................................................................................4
四、缓存更新 ..............................................................................................................................................5
五、缓存降级 ..............................................................................................................................................5
3、热点数据和冷数据是什 .........................................................................................................................6
4Memcache Redis 的区别都有哪些? ...............................................................................................7
5、单线程的 redis 什么这么快 ..................................................................................................................8
6redis 的数据类型,以及每种数据类型的使用场景 ..........................................................................8
7Redis 内部结构 .............................................................................................................................................9
8Redis 为什么是单线程的 ....................................................................................................................... 11
9Redis 集群方案应该怎么做?都有哪些方案? .............................................................................. 13
10、有没有尝试进行多机 redis 的部署?如何保证数据一致的? ................................................ 13
11、对于大量的请求怎么样处理 ............................................................................................................... 14
12Redis 常见性能问题和解决方案? .................................................................................................. 14
13、讲解下 Redis 线程模型 ......................................................................................................................... 15
14、为什么 Redis 的操作是原子性的,怎么保证原子性的? ......................................................... 16
15Redis 事务 .................................................................................................................................................. 17
16Redis 实现分布式锁 ............................................................................................................................... 18
1Redis 持久化机制
Redis 是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同步到
硬盘文件来保证数据持久化。当 Redis 重启后通过把硬盘文件重新加载到内存,
就能达到恢复数据的目的。
实现:单独创建 fork()一个子进程,将当前父进程的数据库数据复制到子进程的
内存中,然后由子进程写入到临时文件中,持久化的过程结束了,再用这个临时
文件替换上次的快照文件,然后子进程退出,内存释放。
RDB Redis 默认的持久化方式。按照一定的时间周期策略把内存的数据以快
照的形式保存到硬盘的二进制文件。Snapshot 快照存储,对应产生的数据文
件为 dump.rdb,通过配置文件中的 save 参数来定义快照的周期。 快照可以
是其所表示的数据的一个副本,也可以是数据的一个复制品。
AOFRedis 会将每一个收到的写命令都通过 Write 函数追加到文件最后,类似
MySQL binlog。当 Redis 重启是会通过重新执行文件中保存的写命令来
在内存中重建整个数据库的内容。
当两种方式同时开启时,数据恢复 Redis 会优先选择 AOF 恢复。
2缓存雪崩、缓存穿透缓存预热、缓存更
新、缓存降级等问题
一、缓存雪崩
我们可以简单的理解为:由于原有缓存失效,新缓存未到期间
(例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存
过期)所有原本应该访问缓存的请求都去查询数据库了,而对数据库 CPU 和内
存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整
个系统崩溃。
解决办法:
大多数系统设计者考虑用加锁( 最多的解决方案)或者队列的方式保证来保证
不会有大量的线程对数据库一次性进行读写,从而避免失效时大量的并发请求落
到底层存储系统上。还有一个简单方案就时讲缓存失效时间分散开。
二、缓存穿透
缓存穿透是指用户查询数据,在数据库没有,自然在缓存中也不会有。这样就导
致用户查询的时候,在缓存中找不到,每次都要去数据库再查询一遍,然后返回
空(相当于进行了两次无用的查询)这样请求就绕过缓存直接查数据库,这也
是经常提的缓存命中率问题。
解决办法;
最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的
bitmap 中,一个一定不存在的数据会被这个 bitmap 拦截掉,从而避免了对底
层存储系统的查询压力。
另外也有一个更为简单粗暴的方法,如果一个查询返回的数据为空(不管是数据
不存在,还是系统故障,我们仍然把这个空结果进行缓存,但它的过期时间会
很短,最长不超过五分钟。通过这个直接设置的默认值存放到缓存,这样第二次
到缓冲中获取就有值了,而不会继续访问数据库,这种办法最简单粗暴。
5TB 的硬盘上放满了数据,请写一个算法将这些数据进行排重。如果这些数据是
一些 32bit 大小的数据该如何解决?如果是 64bit 的呢?
对于空间的利用到达了一种极致,那就是 Bitmap 和布隆过滤器(Bloom Filter)
Bitmap 典型的就是哈希表
缺点是,Bitmap 对于每个元素只能记录 1bit 信息,如果还想完成额外的功能,
恐怕只能靠牺牲更多的空间、时间来完成了。
布隆过滤器(推荐)
就是引入了 k(k>1)k(k>1)个相互独立的哈希函数,保证在给定的空间、误判率
下,完成元素判重的过程。
它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别
率和删除困难。
Bloom-Filter 算法的核心思想就是利用多个不同的 Hash 函数来解决冲突
Hash 存在一个冲突(碰撞)的问题,用同一个 Hash 得到的两个 URL 的值有可
能相同。为了减少冲突,我们可以多引入几个 Hash如果通过其中的一个 Hash
值我们得出某元素不在集合中,那么该元素肯定不在集合中。只有在所有的 Hash
函数告诉我们该元素在集合中时,才能确定该元素存在于集合中。这便是
Bloom-Filter 的基本思想。
Bloom-Filter 一般用于在大数据量的集合中判定某元素是否存在。
三、缓存预热
缓存预热这个应该是一个比较常见的概念,相信很多小伙伴都应该可以很容易的
理解,缓存预热就是系统上线后,将相关的缓存数据直接加载到缓存系统。这样
就可以避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题!用户
摘要:

Redis高频面试题及答案目录1、Redis持久化机制........................................................................................................................................12、缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题................................................2一、缓存雪崩.......................................................

展开>> 收起<<
一线互联网公司面试真题合集Redis高频面试题 - 2.pdf

共18页,预览4页

还剩页未读, 继续阅读

声明:本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。玖贝云文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知玖贝云文库,我们立即给予删除!
分类:计算机 价格:5.9玖币 属性:18 页 大小:944.65KB 格式:PDF 时间:2024-12-10

开通VIP享超值会员特权

  • 多端同步记录
  • 高速下载文档
  • 免费文档工具
  • 分享文档赚钱
  • 每日登录抽奖
  • 优质衍生服务
/ 18
客服
关注