概要
- Redis 是单进程单线程的?
- 是否使用过 Redis 集群,集群的原理是什么?
- 可以简单说说你对Redis Sentinel的理解
- Redis Sentinal和Redis Cluster的区别
- Redis 的同步机制了解么?
- Redis 集群最大节点个数是多少?
Redis 是单进程单线程的?
出现概率: ★★★★
大家所熟知的 Redis 确实是单线程模型,指的是执行 Redis 命令的核心模块是单线程的,而不是整个 Redis 实例就一个线程,Redis 其他模块还有各自模块的线程的。
下面这个解释比较好:
同时Redis 采用网络 I/O 多路复用技术,来保证在多连接的时候系统的高吞吐量。关于 I/O 多路复用(又被称为“事件驱动”),首先要理解的是,操作系统为你提供了一个功能,当你的某个 socket 可读或者可写的时候,它可以给你一个通知。这样当配合非阻塞的 socket 使用时,只有当系统通知我哪个描述符可读了,我才去执行 read 操作,可以保证每次 read 都能读到有效数据而不做纯返回 -1 和 EAGAIN 的无用功,写操作类似。
目前多路复用主要有三种技术:select,poll,epoll。epoll 是最新的也是目前最好的多路复用技术。
采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络 I/O 的时间消耗),且