19图+11题带你面试通关
到了金三银四跳槽季,好多同学已经开始行动了。今天我来助力一把,送出这套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多线程网络模型见下图:核会一直监听新的socket连接事件的和已建立socket连接的读写事件,把监听到的事件放到事件队列,redis使用单线程不停的处理这个事件队列。这避免了阻塞等待连接和读写事件到来。 这些事件绑定了回调函数,会调用redis的处理函数进行处理。 2 redis底层数据结构 redis有5种数据类型,包括「字符串、列表、集合、有序集合和字典」。 redis底层的数据结构有6种,包括「动态字符串、双向链表、压缩列表(ziplist)、hash表、跳表(skip list)和整数数组」。
redis数据类型和底层数据结构有如下对应关系: (编辑:莆田站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |