ToB企服应用市场:ToB评测及商务社交产业平台

标题: 某讯一面,感觉问Redis的难度不是很大 [打印本页]

作者: 天津储鑫盛钢材现货供应商    时间: 昨天 14:08
标题: 某讯一面,感觉问Redis的难度不是很大
前不久,有位朋友去某讯口试,他说被问到了许多关于 Redis 的问题,好比为什么用 Redis 作为 MySQL 的缓存?Redis 中大量 key 集中逾期怎么办?如何保证缓存和数据库数据的同等性?我将它们整理出来,跟各人一起来探讨如何回答这些问题,希望对各人有所资助。
   Redis 为什么这么快?

为什么用 Redis 作为 MySQL 的缓存?

Redis 除了做缓存,还能做什么?

使用 redis 分布式锁,如何合理设置逾期时间?

Redis 单线程模型了解吗?

Redis 中大量 key 集中逾期怎么办?

如何保证缓存和数据库数据的同等性?

  

Redis 为什么这么快?

Redis 内部做了非常多的性能优化,比力重要的有下面几点:
扩展:那既然都这么快了,为什么不直接用 Redis 当主数据库呢?

为什么用 Redis 作为 MySQL 的缓存?

主要是由于 Redis 具备高性能高并发两种特性。下面来详细介绍一个高性能和高并发。(这个问题是个开放题,我的答案仅供参考)
高性能

如果用户第一次访问 MySQL 中的某些数据。这个过程会比力慢,由于是从硬盘上读取的。将该用户访问的数据缓存在 Redis 中,如许下一次再访问这些数据的时间就可以直接从缓存中获取了,操作 Redis 缓存就是直接操作内存,以是速度相称快。
如果 MySQL 中的对应数据改变的之后,同步改变 Redis 缓存中相应的数据即可。
高并发

单台装备的 Redis 的 QPS(Query Per Second,每秒钟处理完请求的次数) 是 MySQL 的 10 倍,Redis 单机的 QPS 能轻松破 10w,而 MySQL 单机的 QPS 很难破 1w。
以是,直接访问 Redis 可以或许承受的请求是远宏大于直接访问 MySQL 的,以是我们可以思量把数据库中的部分数据转移到缓存中去,如许用户的一部分请求会直接到缓存这里而不用经过数据库。
Redis 除了做缓存,还能做什么?

使用 redis 分布式锁,如何合理设置逾期时间?
Redis 单线程模型了解吗?

Redis 基于 Reactor 模式设计开辟了一套高效的事件处理模型 ,这套事件处理模型对应的是 Redis 中的文件事件处理器(file event handler)。
由于文件事件处理器是单线程方式运行的,以是我们一般都说 Redis 是单线程模型。
口试官又问了一个小问题,感觉回答的不错
既然是单线程,那怎么监听大量的客户端连接呢?

Redis 通过 IO 多路复用程序 来监听来自客户端的大量连接(或者说是监听多个 socket),它会将感爱好的事件及范例(读、写)注册到内核中并监听每个事件是否发生。
I/O 多路复用技能的使用让 Redis 不需要额外创建多余的线程来监听客户端的大量连接,降低了资源的消耗,如许使用的利益是非常显着的。
使用 redis 分布式锁,如何合理设置逾期时间?


需要思量如下几个因素:
Redis 中大量 key 集中逾期怎么办?

首先回答 大量 key 集中逾期可能出现的问题:

之后再回答 可以采取的方案:

如何保证缓存和数据库数据的同等性?


其实感觉聊聊 Cache Aside 这个策略就可以了,细说的话没啥太大须要。
下面来说说 Cache Aside 策略:

Cache Aside 中碰到写请求是如许的,更新数据库,然后直接删除缓存。
但是必须是这两步都乐成,才气解决缓存和数据库数据不同等的问题。
关于更新数据库乐成,而删除缓存这一步失败的这种情况,是可能发生的,简单说有两个解决方案:

恭喜你,口试通过!!!

就业陪跑训练营学员投稿
接待关注 ❤

我们搞了一个免费的口试真题共享群,互通有无,一起刷题进步。
没准能让你能刷到自己意向公司的最新口试题呢。
感爱好的朋友们可以私信我,备注:口试群。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4