Redis为什么快呢?
redis的速度非常的快,单机的redis就可以支撑每秒10几万的并发,相对于mysql来说,性能是mysql的几十倍。速度快的原因主要有几点:
-
完全基于内存操作
-
C语言实现,优化过的数据结构,基于几种基础的数据结构,redis做了大量的优化,性能极高
-
使用单线程,无上下文的切换成本
-
基于非阻塞的IO多路复用机制
那为什么Redis6.0之后又改用多线程呢?
redis使用多线程并非是完全摒弃单线程,redis还是使用单线程模型来处理客户端的请求,只是使用多线程来处理数据的读写和协议解析,执行命令还是使用单线程。
这样做的目的是因为redis的性能瓶颈在于网络IO而非CPU,使用多线程能提升IO读写的效率,从而整体提高redis的性能。
知道什么是热key吗?热key问题怎么解决?
所谓热key问题就是,突然有几十万的请求去访问redis上的某个特定key,那么这样会造成流量过于集中,达到物理网卡上限,从而导致这台redis的服务器宕机引发雪崩。
针对热key的解决方案:
-
提前把热key打散到不同的服务器,降低压力
-
加入二级缓存,提前加载热key数据到内存中,如果redis宕机,走内存查询