当前位置: 首页 > news >正文

分类信息网站系统cms网站建设名词解析

分类信息网站系统cms,网站建设名词解析,wordpress手机网站模版,茂名建网站文章目录 一、redis单线程模型1.1 为什么redis命令处理是单线程#xff0c;而不采用多线程1.2 单线程的局限及redis的优化方式 二、redis单线程为什么这么快2.1 采用的机制2.2 优化的措施 三、redis的IO多线程模型3.1 redis 为什么引入IO多线程模型3.2 配置io-threads-do-read… 文章目录 一、redis单线程模型1.1 为什么redis命令处理是单线程而不采用多线程1.2 单线程的局限及redis的优化方式 二、redis单线程为什么这么快2.1 采用的机制2.2 优化的措施 三、redis的IO多线程模型3.1 redis 为什么引入IO多线程模型3.2 配置io-threads-do-reads3.3 流程 一、redis单线程模型 首先需要注意的是redis整体而言并不是单线程。 redis-server是主线程所说的redis是单线程主要指redis-server这个线程用于处理命令。 所谓的redis单线程指的是命令处理、逻辑处理在一个单线程中。即【接收客户端请求–解析请求 --进行数据读写等操作–发送数据给客户端】这个过程是由一个线程主线程来完成的。 redis 6.0 版本之前的单线模式 图中的蓝色部分是一个事件循环是由主线程负责的可以看到网络 I/O 和命令处理都是单线程。 1.1 为什么redis命令处理是单线程而不采用多线程 redis支持多种数据结构如string、list、hash、set、zset等每个对象类型都是由多个数据结构实现的。因此多线程环境下加锁复杂、锁粒度不好控制。频繁的上下文切换会带来更多的时间和性能上的开销从而抵消多线程的优势。redis作为数据库并不是每时每刻都有密集访问。在多线程环境下访问少时需要将一些线程休眠访问多时又需要唤醒这就存在频繁的线程调度问题。 1.2 单线程的局限及redis的优化方式 单线程最大的局限在于不能有耗时操作即阻塞IO、CPU运算时间比较长的任务等。这会影响redis的响应性能。 redis的耗时操作以及其解决优化方式 1IO密集型 —— 磁盘IO redis提供了类似于日志备份的 aofAppend-Only File方式以支持持久化也就是对数据的更改操作需要刷新落到磁盘里。针对这个耗时操作redis有两种优化方法1、rdbRedis Database文件redis会fork一个子进程在子进程中进行持久化不占用主线程的资源。2、aof持久化策略redis会创建bio_aof_fsync线程进程异步刷盘。 2IO密集型 —— 网络IO 当redis服务多个客户端时如果数据请求或返回数据量比较大时造成了IO密集型的情况也是比较耗时的操作。对比redis通过开启IO多线程io_thd_*线程来处理网络IO。 3CPU密集型redis支持丰富的数据结构而有些数据结构操作的事件复杂度比较高就可能会导致CPU花费大量的时间去计算。对比redis采用分治的方式。 二、redis单线程为什么这么快 2.1 采用的机制 redis采用了以下机制 redis是内存数据库数据存储在内存中可以高效地访问。redis使用hash table的数据组织方式查询数据的时间复杂度为 O ( 1 ) O(1) O(1)能快速查找数据。redis采用了高效的数据结构可以根据性能进行数据结构切换使得执行效率与空间占用保持平衡。redis使用高效的reactor网络模型。 2.2 优化的措施 redis采用分治的思想把rehash分摊到之后的每步增删查改的操作当中。同时在定时器中最大执行1毫秒的rehash每次步长100个数组槽位。redis将耗时阻塞的操作放在其他线程处理。redis针对不同的对象类型采用不同的数据结构实现。比如string对象针对不同的数据长度有int、raw、embstr三种编码方式。 127.0.0.1:6379 set name jack OK 127.0.0.1:6379 OBJECT encoding name embstr 127.0.0.1:6379 set name 1001 OK 127.0.0.1:6379 OBJECT encoding name int 127.0.0.1:6379 set name 123456789012345678901234567890123456789012345678901234567890 OK 127.0.0.1:6379 OBJECT encoding name raw三、redis的IO多线程模型 3.1 redis 为什么引入IO多线程模型 在 redis 6.0 版本之后也采用了多个 I/O 线程来处理网络请求这是因为随着网络硬件的性能提升redis 的性能瓶颈有时会出现在网络 I/O 的处理上。所以为了提高网络 I/O 的并行度Redis 6.0 对于网络 I/O 采用多线程来处理。但是对于命令的执行Redis 仍然使用单线程来处理。 即多线程处理网络IOread、decode和encode、send阶段。主线程使用单线程执行命令处理业务逻辑因为 redis 采用高效的数据结构其业务逻辑处理较快所以用单线程即可。 3.2 配置io-threads-do-reads io-threads-do-reads是 redis.conf 文件中的一个配置选项用于控制 I/O 线程是否执行读取操作。 默认情况下 I/O 多线程只针对发送响应数据 encode, send并不会以多线程的方式处理读请求 read, decode。要想开启多线程处理客户端读请求就需要把 Redis.conf 配置文件中的 io-threads-do-reads 配置项设为 yes。 //读请求也使用io多线程 io-threads-do-reads yes // io-threads N表示启用 N-1 个 I/O 多线程主线程也算一个 I/O 线程 io-threads 4 当将 io-threads-do-reads 设置为 “yes” 时I/O 线程将负责处理客户端请求的读取操作。这意味着 I/O 线程可以直接从套接字中读取数据并进行相应的处理而无需等待主线程来分发任务。 使用 io-threads-do-reads 的好处是能够减轻主线程的负担提高系统的并发性能和响应速度。通过将读取操作分配给专门的 I/O 线程可以使主线程更专注于处理其他的任务如写入操作、协议解析和业务逻辑等。 3.3 流程 对于 redis 来说它采用的是 I/O 多路复用技术而不是真正的多线程模型。其基本流程 redis-server主线程作为生产者 ∙ \bullet ∙ 当有新的客户端连接请求到达时主线程会将对应的客户端套接字加入到clients_pending_read 队列中。这表示该连接上有数据可读需要被处理。 ∙ \bullet ∙ 当有客户端数据写入请求到达时主线程会将对应的客户端套接字加入到 clients_pending_write 队列中。这表示该连接上可以进行写操作。redis-server主线程作为消费者 ∙ \bullet ∙ 主线程通过循环遍历 clients_pending_read 队列中的客户端套接字并将其分配给合适的 I/O 线程处理。主线程会根据负载均衡策略如轮询或哈希来决定将客户端套接字分发给哪个 I/O 线程的专属队列。 ∙ \bullet ∙ 类似地主线程也会从 clients_pending_write 队列中获取客户端套接字并将其分配给适当的 I/O 线程处理。I/O 线程执行任务 ∙ \bullet ∙ 每个 I/O 线程拥有一个专属队列如 io_threads_list[id]主线程将客户端套接字分配给指定的 I/O 线程并将其加入到对应的队列中。 ∙ \bullet ∙ I/O 线程通过从自己的队列中获取客户端套接字进行实际的读写操作和请求处理。一旦完成操作也可以将结果返回给主线程。 通过这种队列模型和任务调度方式主线程在兼顾生产者和消费者角色的同时能够高效地将任务分发给对应的 I/O 线程进行处理以提高并发性能和系统的吞吐量。同时这种设计还能避免多线程并发带来的同步问题和竞争条件保证了系统的稳定性和可靠性。
http://www.w-s-a.com/news/913418/

相关文章:

  • 网站没收录徐州建设工程审图中心网站
  • 网站建设记账做什么科目erp系统有哪些软件
  • 泰拳图片做网站用哪里有做空包网站的
  • 查外链网站重庆做网站微信的公司
  • 有没有外包活的网站如何做网站快捷键的元素
  • 公司网站赏析网站制作2019趋势
  • 企业进行网站建设的方式有( )推广引流违法吗
  • 按营销型网站要求重做网站 费用点金网站建设
  • 深圳做网站互联网服务
  • 网站sem托管wordpress安装无法连接数据库
  • 深圳网站建设开发公司哪家好微信小程序商家入口
  • 江门站排名优化建立什么网站赚钱
  • 科普文章在那个网站做招聘网站代做
  • 监控设备东莞网站建设游戏网站域名
  • 对商家而言网站建设的好处网址导航怎么彻底删除
  • app设计网站模板企业展厅策划设计公司有哪些
  • wordpress销售主题手机网站关键词优化
  • 怎么查一个网站是什么程序做的三亚城乡建设局网站
  • 深圳分销网站设计公司做网站一般需要多久
  • 企业网站设计代码丹东seo排名公司
  • 企业网站建设定制开发服务网站建设说课ppt
  • 大连市城乡建设局网站网站免费网站入口
  • 做暧网站网站备案ps
  • 知名网站建设公司电话长子网站建设
  • 网站建设的意义与目的建立什么船籍港
  • 广州注册公司营业执照网站建设代码优化
  • 百度网站官网马克互联网主题 wordpress
  • 网站制作 客户刁难深圳自助建站
  • 怎么去推广一个网站广东餐饮品牌设计
  • 网站代码加密了怎么做兰州最新大事