Redis面试题.docx
《Redis面试题.docx》由会员分享,可在线阅读,更多相关《Redis面试题.docx(45页珍藏版)》请在第一文库网上搜索。
1、一适合的场景Redis使用场景不适合的场景或霭鬻祟镶畛职小助手Redis面试题1、谈下你对Redis的了解?Redis (全称:Remote Dictionary Server远程字典服务)是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的APIo2、Redis 一般都有哪些使用场景?- 缓存- 排行榜- 计数器质速器(统计在线人数/浏览量/播放量)- 好友关系(点赞/共同好友)- 简单的消息队列(订阅发布)Session服务器Redis适合的场景1.缓存:减轻MySQL的查询压力,提升系统性能;2.3.排行榜:利用Redis
2、的SortSet (有序集合)实现;4.5.计算器/限速器:利用Redis中原子性的自增操作,我们可以统计类似用户点赞数、用户访问数等。这类操作如果用MySQL,频繁的读写会带来相当大的压力;限速器比较典型的使用场景是限制某个用户访问某个API的频率,常用的有抢购时,防止用户疯狂点击带来不必要的压力;6.7.好友关系:利用集合的一些命令,比如求交集、并集、差集等。可以方便解决一些共同好友、共同爱好之类的功能;8.9.消息队列:除了 Redis自身的发布/订阅模式,我们也可以利用List来实现一个队列机制,比如:到货通知、邮件发送之类的需求,不需要高可靠,但是会带来非常大的DB压力,完全可以用L
3、ist来完成异步解耦;10.11.Session共享:Session是保存在服务器的文件中,如果是集群服务,同一个用户过来可能落在不同机器上,这就会导致用户频繁登陆;采用Redis保存Session后,无论用户落在那台机器上都能够获取到对应的Session信息。12.Redis不适合的场景数据量太大、数据访问频率非常低的业务都不适合使用Redis,数据太大会增加成木,访问频率太低,保存在内存中纯属浪费资源。3、Redis有哪些常见的功能?1.数据缓存功能2.3.分布式锁的功能4.5.支持数据持久化6.支持事务7.9.支持消息队列10.4、Redis支持的数据类型有哪些?1. string字符串
4、字符串类型是Redis最基础的数据结构,首先键是字符串类型,而且其他几种结构都是在字符串类型基础上构建的。字符串类型实际上可以是字符串:简单的字符串、XML、JSON;数字:整数、浮点数;二进制:图片、音频、视频。使用场景:缓存、计数器、共享Session、限速。2. Hash (哈希)在 Redis中哈希类型是指键本身是一种键值对结构,如value=f i eldl,valuel),f i eldN, valueN)使用场景:哈希结构相对于字符串序列化缓存信息更加直观,并且在更新操作上更加便捷。所以常常用于用户信息等管理,但是哈希类型和关系型数据库有所不同,哈希类型是稀疏的,而关系型数据库是
5、完全结构化的,关系型数据库可以做复杂的关系查询,而Redis去模拟关系型复杂查询开发困难且维护成本高。3. List (列表)列表类型是用来储存多个有序的字符串,列表中的每个字符串成为元素,一个列表最多可以储存2-32 - 1个元素,在Redis中,可以队列表两端插入和弹出,还可以获取指定范围的元素列表、获取指定索引下的元素等,列表是一种比较灵活的数据结构,它可以充当栈和队列的角色。使用场景:Redis的Ipush + brpop命令组合即可实现阻塞队列,生产者客户端是用Ipush从列表左侧插入元素,多个消费者客户端使用brpop命令阻塞式的“抢”列表尾部的元素,多个客户端保证了消费的负载均衡
6、和高可用性。4. Set (集合)集合类型也是用来保存多个字符串的元素,但和列表不同的是集合中不允许有重复的元素,并且集合中的元素是无序的,不能通过索引下标获取元素,Redis除了支持集合内的增删改查,同时还支持多个集合取交集、并集、差集。合理的使用好集合类型,能在实际开发中解决很多实际问题。使用场景:如:一个用户对娱乐、体育比较感兴趣,另一个可能对新闻感兴趣,这些兴趣就是标签,有了这些数据就可以得到同一标签的人,以及用户的共同爱好的标签,这些数据对于用户体验以及曾强用户粘度比较重要。5. zset (sorted set:有序集合)有序集合和集合有着必然的联系,它保留了集合不能有重复成员的特
7、性,但不同得是,有序集合中的元素是可以排序的,但是它和列表的使用索引下标作为排序依据不同的是:它给每个元素设置一个分数,作为排序的依据。使用场景:排行榜是有序集合经典的使用场景。例如:视频网站需要对用户上传的文件做排行榜,榜单维护可能是多方面:按照时间、按照播放量、按照获得的赞数等。5、Redis为什么这么快?1.完全基于内存,绝大部分请求是纯粹的内存操作,非常快速;2.3.数据结构简单,对数据操作也简单;4.5.采用单线程,避免了不必要的卜.下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可.能出现死锁而导致的性能消耗
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Redis 试题