当前位置:主页 > 查看内容

浅谈Redis线程模型

发布时间:2021-04-07 00:00| 位朋友查看

简介:1.Redis简介1.1简介 REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-valu存储系统 是跨平台的非关系型数据库。Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Va……
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线程模型

image.jpeg

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与命令回复处理器绑定 并且会将请求结果返回给客户端。










本文转自网络,原文链接:https://developer.aliyun.com/article/783363
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐