redis高级面试

一:Redis 单线程时代性能很快的原因

  1. 基于内存操作:所有Redis的数据都存在内存中,因此所有的运算都是内存级别的,所以他的性能高
  2. 数据结构简单:Redis的数据结构的查找和操作时间大部分复杂度都是O(1),性能高
  3. 多路复用和非阻塞IO:Redis使用I/O多路复用来监听多个socket连接客户端,这样可以使用一个线程来处理多个请求,减少线程切换带来额开销,同时也避免了I/O阻塞操作
  4. 避免上下文切换:因为是单线程模型,这就省去了多线程切换带来的时间和性能上的消耗

二:为什么Redis6/7引入了多线程?

对于Redis 主要的性能瓶颈是内存或者网络带宽 而并非CPU,如果能采用多线程并行处理网络操作,就可以大大的提升性能。多线程还可以充分利用 CPU 的多核优势。Redis 只是将 I/O 读写变成了多线程,而命令的执行依旧是由主线程串行执行的

三:什么是热Key问题,如何解决热key问题?

如果在同一个时间点上,Redis中的同一个key被大量访问,就会导致流量过于集中,使得很多物理资源无法支撑,如网络带宽、物理存储空间、数据库连接等。

四:什么是大Key问题,如何解决?

  1. 什么是大Key:Redis中存储了大量数据的Key,不要误以为大 key只是表示Key的值很大,他还包括这个Key对应的value占用空间很多的情况
  2. 多大算大Key以及它的危害?
    string 是value,最大512MB但是 >= 10KB 就是bigkey
    list、hash、set和zset,含有的成员数量超过5000就是bigkey
  3. 如何解决大Key问题

你可能感兴趣的:(redis,java)