>>分享流行的Java框架以及开源软件,对孙卫琴的《精通Spring》、《Spring Cloud Alibaba微服务开发零基础入门到实操》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 20128 个阅读者 刷新本主题
 * 贴子主题:  Redis为什么单线程能够支持高并发 回复文章 点赞(0)  收藏  
作者:javathinker    发表时间:2021-06-24 01:12:45     消息  查看  搜索  好友  复制  引用

    
  a、首先Redis官方网站是没有windows版本的,只有linux版本的redis
  b、redis的底层是采用NIO的多路IO复用机制实现对不同的tcp链接实现io复用,能否非常好的支持高并发,同事能够先天性支持线程安全问题。

--多路IO复用机制:使用一个线程维护多个不同的IO操作,原理是使用Nio的选择器,将多个不同的Channel(TCP通道)统一交给我们的Selector选择器管理,减少了资源的浪费
  c、NIO在不同的操作系统上实现方式是不同的

Windows系统使用Selector实现轮询机制,时间复杂度为O(n),而且还存在空轮询的情况,效率非常低;其次是默认对我们的轮询数据有一定限制1024,所以支持上万TCP链接非常难。

Linux操作系统采用epoll实现事件驱动通知形式,不会存在空轮训的情况,只对活跃的socket链接实现主动回调,在性能上有大大的提升,事件复杂度为O(1)

所以nginx支持5W的并发量,以及Redis能够有非常高的并发量,都是使用了Linux中的IO多路复用机制epoll。
----------------------------
原文链接:https://www.jianshu.com/p/8da2cc0f19a7

程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2021-08-30 20:31:18 重新编辑]
  Java面向对象编程-->多线程(下)
  JavaWeb开发-->自定义JSP标签(Ⅰ)
  JSP与Hibernate开发-->Spring、JPA与Hibernate的整合
  Java网络编程-->用Swing组件展示HTML文档
  精通Spring-->
  Vue3开发-->CSS过渡和动画
  Spring Boot 入门,用 Spring Boot 写第一个 HelloWorld 程序
  RocketMQ 常用消息类型
  微服务架构集大成者—Spring Cloud简明教程
  Mybatis-plus大数据量流式查询
  微服务的拆分方式
  在Spring MVC中配置线程池,进行异步请求处理
  @Resource注解的用法
  Spring Data JPA详解
  Spring Boot和Feign中使用Java 8时间日期API(LocalDate等)...
  spring cloud分布式微服务的概览
  【Web服务开发】基于Java开发代驾定位系统,2天完成脚手架
  酒店评论数据分析和挖掘-展现数据分析全流程:报告展示篇
  Spring @Transactional注解失效解决方案
  mybatis-plus 注解实现多表关联查询的最佳实践
  Spring如何实现AOP,请不要再说cglib了!
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。