Redis面试题汇总一
1、什么是Redis redis本质是一个key-value类型的内存数据库,整个数据库统统加载在内存中进行操作,定期通过异步操作把数据库数据flush到硬盘上保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。除此之外,redis还支持多种数据结构(如list,string,set,zset,hash)。 2、Redis为什么这么快? ①、redis完全基于内存 ②、使用单线程,避免了不必要的上下文切换和竞争条件 ③、使用了I/O多路复用模型 关于redis I/O多路复用解释如下图: 这里“多路”指的是多个网络连接,“复用”指的是复用同一个线程。采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络 IO 的时间消耗),且 Redis 在内存中操作数据的速度非常快,也就是说内存内的操作不会成为影响Redis性能的瓶颈,主要由以上几点造就了 Redis 具有很高的吞吐量。 3、为什么Redis是单线程的? 对于Redis的单线程解释:单线程指的是网络请求模块使用了一个线程(所以不需考虑并发安全性),即一个线程处理所有网络请求,其他模块仍用了多个线程。 官方FAQ表示,因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或者网络带宽