浅谈Redis线程模型

1.Redis简介

1.1简介

REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-valu存储系统,是跨平台的非关系型数据库。Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。

2.特征

1.NoSQL

2.分布式缓存中间件

3.key-value

4.提供海量的数据存储访问

5.所有数据放在内存中,访问数据非常快

6.非关系型,分布式,支持水平扩展,开源



2.Redis线程模型

浅谈Redis线程模型

redis线程模型采用的是单线程模型,因为它是基于一个文件事件处理模型,而且该文件处理模型是单线程所以redis也是单线程的。那么这个文件事件处理器概含那些部分呢,它又是如何工作的呢。

文件事件处理模型如上图主要包含以下几部分:

1.Socket,一个redis服务器可以被多个redis客户端连接,这里的socket就代表着我们每一个连接着redis服务器的客户端,负责监听所以客户端的请求。

2.I/O多路复用器,服务器既然能被多个客户端连接,那么难免会出现请求并发的情况,I/O多路复用器负责监听各个socket,每当监听到socket的时候会将该socket放入一个队列,进而就将多客户端并发的这种请求转变成了队列这种串形方式

3.文件事件分配器,负责将I/O队列里的事件读取处理,然后分派给各个处理器进行处理。

4.事件处理器,负责处理对应的事件;事件处理器又包含3部分:连接应答处理器,命令请求处理器,命令回复处理器。

5.AE_Readable事件,当客户端连接到服务器,被socket监听到就会产生一个对应        AE_Readable事件。

6.AE_Writeable事件,当文件事件分配器分配事件到具体事件处理器事就会产生对        对应的AE_Writeable事件。


3.基于Redis线程模型的宏观工作流程

1.当redis客户端向服务器端发起一个写操作请求,Server Socket监听到请求后会产        生一个AE_Readable事件。

2.I/O多路复用器监听的socket后,将其放入队列中。

3.文件事件分配器从队列读取到事件后,将该事件分配给连接应答处理器,这时候会产生一个与客户端映射的socket,并将该socket与命令请求处理器绑定,这时候如果客户端请求某些操作时,例如本次请求写操作,这时候命令请求处理器就会执行对应的命令。

4.命令请求处理器处理完命令后,会将该socket与命令回复处理器绑定,并且会将请求结果返回给客户端。









上一篇:推荐 :2018最流行的编程语言Top 3


下一篇:教你彻底学会c语言基础——文件操作