美文网首页
Redis心得体会

Redis心得体会

作者: 爱吃红色西红 | 来源:发表于2020-03-30 14:53 被阅读0次

阻塞
服务器多个监听多个io,如果有一个客户连接上了但是没有发消息,别的io就会一直阻塞,客户连不上也发不了消息。
非阻塞
服务器多个监听多个io,如果一个客户连接上了但是没有发消息,并不会阻塞,而是轮询处理发过来的消息。
多路复用
相对于非阻塞,增加了事件监听,收到消息发送事件处理。(redis)

  1. IO多路复用

     参考: https://www.zhihu.com/question/32163005
    

要弄清问题先要知道问题的出现原因

原因:

由于进程的执行过程是线性的(也就是顺序执行),当我们调用低速系统I/O(read,write,accept等等),进程可能阻塞,此时进程就阻塞在这个调用上,不能执行其他操作.阻塞很正常.

接下来考虑这么一个问题:一个服务器进程和一个客户端进程通信,服务器端read(sockfd1,bud,bufsize),此时客户端进程没有发送数据,那么read(阻塞调用)将阻塞,直到客户端调用write(sockfd,but,size)发来数据.在一个客户和服务器通信时这没什么问题;

当多个客户与服务器通信时当多个客户与服务器通信时,若服务器阻塞于其中一个客户sockfd1,当另一个客户的数据到达套接字sockfd2时,服务器不能处理,仍然阻塞在read(sockfd1,...)上;此时问题就出现了,不能及时处理另一个客户的服务,咋么办?

I/O多路复用来解决!

I/O多路复用:

继续上面的问题,有多个客户连接,sockfd1,sockfd2,sockfd3..sockfdn同时监听这n个客户,当其中有一个发来消息时就从select的阻塞中返回,然后就调用read读取收到消息的sockfd,然后又循环回select阻塞;这样就不会因为阻塞在其中一个上而不能处理另一个客户的消息

1.CPU本来就是线性的不论什么都需要顺序处理并行只能是多核CPU

2.io多路复用本来就是用来解决对多个I/O监听时,一个I/O阻塞影响其他I/O的问题,跟多线程没关系.

3.跟多线程相比较,线程切换需要切换到内核进行线程切换,需要消耗时间和资源.而I/O多路复用不需要切换线/进程,效率相对较高,特别是对高并发的应用nginx就是用I/O多路复用,故而性能极佳.但多线程编程逻辑和处理上比I/O多路复用简单.而I/O多路复用处理起来较为复杂.

相关文章

  • 记一次redis性能优化

    前沿 最近工作中在优化redis访问性能,这里总结一下优化过程中redis使用方法的一些心得体会,以及在sprin...

  • Redis心得体会

    阻塞服务器多个监听多个io,如果有一个客户连接上了但是没有发消息,别的io就会一直阻塞,客户连不上也发不了消息。非...

  • ActiveMQ 从零到最佳实践

    最近一段时间想把自己在以前项目中用的技术总结出来比如 nginx,redis比较实用的技术分享一下自己的心得体会供...

  • redis常用命令教程

    Redis 基础教程 Redis 教程、Redis 安装、Redis 配置、Redis 数据类型 Redis 命令...

  • 当传统文化幼师的心得体会《圣贤教育》

    当传统文化幼师的心得体会 当传统文化幼师的心得体会 篇一:传统文化教育心得体会 学习中华传统文化教育的心得体会...

  • 当传统文化幼师的心得体会

    当传统文化幼师的心得体会 当传统文化幼师的心得体会 篇一:传统文化教育心得体会 学习中华传统文化教育的心得体会...

  • redis 集群搭建

    redis 安装步骤 创建redis用户 useradd redis passwd redis 切换redis用户...

  • Redis cheatsheet 常用命令

    Run redis 运行redis server cd redis/; ./redis-server运行redis...

  • redis常用命令

    查看redis进程 连接redis redis启动 redis停止 redis查看配置文件 redis查看最大连接...

  • Linux/Mac安装Redis数据库

    Mac安装Redis brew安装redis 安装Redis brew install redis 启动redis...

网友评论

      本文标题:Redis心得体会

      本文链接:https://www.haomeiwen.com/subject/xarvuhtx.html