高性能内存数据库Redis
基础篇
杜如意(DBA)
duruyi@isesol.com
目 录
Redis 特性
02
01
Redis简介
应用场景
04
03
High
Availability
01
PART 01
简介
Redis 是什么?
Redis 数据类型
Redis 线程模型
Redis 性能
Redis是什么?
单进程单线程模型
多路IO复用模块 + AeEventLoop
Epoll监听多个socket,AE将连接、读、写、关闭都转化为事件,
不在IO上浪费时间
main thread
执行客户端的命令请求
BIO background thread
耗时的操作,会放到后台线程中执行。
如,文件句柄关闭任务;AOF持久化;空间懒释放
Fork subprocess:RDB/REWRITEAOF
单线程模型的问题
单条命令执行占用大量时间,会造成阻塞
Redis为什么使用单线程模型
ALL in-memory 100ns;
瓶颈不在CPU而在于network IO,可启多实例来提升CPU利用率;
避免多线程的上下文切换和竞态条件的开销,实现简单。
Redis使用了单线程,为什么还这么快?
绝大部分请求都是在内存中完成;
单线程,避免多线程带来的损耗;
多路复用非阻塞IO模型:epoll+AeEventLoop