FWQ
Redis面试:19图+11题帮你通关
Redis面试:19图+11题帮你通关 收藏 各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题是《Redis面试:19图+11题帮你通关》,很明显是关于数据库的文章哈哈哈,其中内容主要会涉及到Redis、面试、场景等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享! 本文转载自微信公众号「程序员jinjunzhu」,作者 jinjunzhu 。转载本文请联系程序员jinjunzhu公众号。 又到了金三银四跳槽季,好多同学已经开始行动了。今天我来助力一把,送出这套redis面试题,助力大家通关。 1 redis为什么响应快 1.1数据保存在内存中 redis数据保存在内存中,读写操作只要访问内存,不需要磁盘IO。 1.2.底层数据结构 redis的数据以key:value的格式存储在散列表中,时间复杂度o(1)。 redis为value定义了丰富的数据结构,包括态字符串、双向链表、压缩列表、hash、跳表和整数数组,可以根据value的特性选择选择最高效的数据结构。 1.3.单线程模型 redis的网络IO和数据读写使用单线程模型,可以绑定CPU,这避免了线程上下文切换带来的开销。 「注意:redis6.0对网络请求引入了多线程模型,读写操作还是用单线程。」 redis多线程网络模型见下图: 1.4.IO多路复用 redis采用epoll网络模型,如下图: 内核会一直监听新的socket连接事件的和已建立socket连接的读写事件,把监听到的事件放到事件队列,redis使用单线程不停的处理这个事件队列。这避免了阻塞等待连接和读写事件到来。 这些事件绑定了回调函数,会调用redis的处理函数进行处理。 2 redis底层数据结构 redis有5种数据类型,包括「字符串、列表、集合、有序集合和字典」。 redis底层的数据结构有6种,包括「动态字符串、双向链表、压缩列表(ziplist)、hash表、跳表(skip list)和整数数组」。…