Redis面试题八股文.pdfVIP

  1. 1、本文档共69页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
图⽂详解 53 道 Redis ⾯试⾼频题,这次吊打⾯试官,我觉得稳了(⼿动 dog)。整理:楼仔,作者:三分 恶,戳原⽂链接。 基础 1.说说什么是Redis? Redis是⼀种基于键值对(key-value)的NoSQL数据库。 ⽐⼀般键值对数据库强⼤的地⽅,Redis中的value⽀持string (字符串)、hash (哈希)、 list (列表)、set (集 合)、zset (有序集合)、Bitmaps (位图)、 HyperLogLog 、GEO (地理信息定位)等多种数据结构,因此 Redis可以满⾜很多的应⽤场景。 ⽽且因为Redis会将所有数据都存放在内存中,所以它的读写性能⾮常出⾊。 不仅如此,Redis还可以将内存的数据利⽤快照和⽇志的形式保存到硬盘上,这样在发⽣类似断电或者机器故障的 时候,内存中的数据不会“丢失” 。 除了上述功能以外,Redis还提供了键过期、发布订阅、事务、流⽔线、Lua脚本等附加功能。 总之,Redis是⼀款强⼤的性能利器。 2.Redis可以⽤来⼲什么? 1. 缓存 这是Redis应⽤最⼴泛地⽅,基本所有的Web应⽤都会使⽤Redis作为缓存,来降低数据源压⼒,提⾼响应速 度。 2. 计数器 Redis天然⽀持计数功能,⽽且计数性能⾮常好,可以⽤来记录浏览量、点赞量等等。 3. 排⾏榜 Redis提供了列表和有序集合数据结构,合理地使⽤这些数据结构可以很⽅便地构建各种排⾏榜系统。 4. 社交⽹络 赞/踩、粉丝、共同好友/喜好、推送、下拉刷新。 5. 消息队列 Redis提供了发布订阅功能和阻塞队列的功能,可以满⾜⼀般消息队列功能。 6. 分布式锁 分布式环境下,利⽤Redis实现分布式锁,也是Redis常⻅的应⽤。 Redis的应⽤⼀般会结合项⽬去问,以⼀个电商项⽬的⽤户服务为例: Token存储:⽤户登录成功之后,使⽤Redis存储Token 登录失败次数计数:使⽤Redis计数,登录失败超过⼀定次数,锁定账号 地址缓存:对省市区数据的缓存 分布式锁:分布式环境下登录、注册等操作加分布式锁 …… 3.Redis 有哪些数据结构? Redis有五种基本数据结构。 string 字符串最基础的数据结构。字符串类型的值实际可以是字符串(简单的字符串、复杂的字符串(例如JSON 、 XML))、数字 (整数、浮点数),甚⾄是⼆进制(图⽚、⾳频、视频),但是值最⼤不能超过512MB。 字符串主要有以下⼏个典型使⽤场景: 缓存功能 计数 共享Session 限速 hash 哈希类型是指键值本身⼜是⼀个键值对结构。 哈希主要有以下典型应⽤场景: 缓存⽤户信息 缓存对象 list 列表(list)类型是⽤来存储多个有序的字符串。列表是⼀种⽐较灵活的数据结构,它可以充当栈和队列的⻆⾊ 列表主要有以下⼏种使⽤场景: 消息队列 ⽂章列表 set 集合(set)类型也是⽤来保存多个的字符串元素,但和列表类型不⼀样的是,集合中不允许有重复元素,并且集 合中的元素是⽆序的。 集合主要有如下使⽤场景: 标签(tag) 共同关注 sorted set 有序集合中的元素可以排序。但是它和列表使⽤索引下标作为排序依据不同的是,它给每个元素设置⼀个权重 (score)作为排序的依据。 有序集合主要应⽤场景: ⽤户点赞统计 ⽤户排序 4.Redis为什么快呢? Redis的速度⾮常的快,单机的Redis就可以⽀撑每秒⼗⼏万的并发,相对于MySQL来说,性能是MySQL的⼏⼗ 倍。速度快的原因主要有⼏点: 1. 完全基于内存操作 2. 使⽤单线程,避免了线程切换和竞态产⽣的消耗 3. 基于⾮阻塞的IO多路复⽤机制 4. C语⾔实现,优化过的数据结构,基于⼏种基础的数据结构,redis做了⼤量的优化,性能极⾼ 5.能说⼀下I/O多路复⽤吗? 引⽤知乎上⼀个⾼赞的回答来解释什么是I/O多路复⽤。假设你是⼀个⽼师,让30个学⽣解答⼀道题⽬,然后检查 学⽣做的是否正确,你有下⾯⼏个选择: 第⼀种选择:按顺序逐个检查,先检查A ,然后是B,之后是C、D。。。这中间如果有⼀个学⽣卡住,全班都 会被耽误。这种模式就好⽐,你⽤循环挨个处理socket,根本不具有并发能⼒。 第⼆种选择:你创建30个分身,每个分身

文档评论(0)

jayjiao + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

认证主体焦**

1亿VIP精品文档

相关文档

相关课程推荐