原理剖析

从原理层面,咱们能够将此类问题分为内因和外因

内因

长久化带来的阻塞问题(AOF重写和生成RDB)

redis在做AOF或生成RDB的时候,须要fork操作创立子过程,fork过程,尽管不会间接拷贝父过程的物理内存空间,但回复制父过程的内存页表.
从教训来说,如果redis有10G内存,那么复制大略20MB的内存页表

CPU饱和

如果redis的cpu跑到近100%,是比拟危险的,能够应用top命令查看,或者应用redis-cli --stat命令查看

慢查问和大key

应用keys* 或者hgetall等命令,工夫复杂度是O(n)
大key的读写和写入须要更大内存空间,容易阻塞

外因

应用SWAP内存替换

如果操作系统的内存不够,将一部分内存数据换出到磁盘,那么Redis的拜访无疑会受到影响,因为内存和磁盘的访问速度,差了好几个数量级。
因而,应用Redis的机器上,尽量敞开swap,并设置Redis的maxmemory,防止Redis内存的无限度上涨。

网络问题

这个就十分常见了,网络抖动,网络闪断,网络提早,网卡软中断等。这里给出查看网络延时的方法,通常状况下,能够应用redis-cli --latency命令来查看Redis的提早状况。