Redis为何是单线程的
2024-10-09 05:54:29
以前一直有个误区,以为:高性能服务器 一定是 多线程来实现的
原因很简单因为误区二导致的: 多线程 一定比 单线程 效率高。其实不然。
redis 核心就是 如果我的数据全都在内存里,我单线程的去操作 就是效率最高的,为什么呢,因为多线程的本质就是 CPU 模拟出来多个线程的情况,这种模拟出来的情况就有一个代价,就是上下文的切换,对于一个内存的系统来说,它没有上下文的切换就是效率最高的。redis 用 单个CPU 绑定一块内存的数据,然后针对这块内存的数据进行多次读写的时候,都是在一个CPU上完成的,所以它是单线程处理这个事。在内存的情况下,这个方案就是最佳方案 —— 阿里 沈询
因为一次CPU上下文的切换大概在 1500ns 左右。
从内存中读取 1MB 的连续数据,耗时大约为 250us,假设1MB的数据由多个线程读取了1000次,那么就有1000次时间上下文的切换,
那么就有1500ns * 1000 = 1500us ,我单线程的读完1MB数据才250us ,你光时间上下文的切换就用了1500us了,我还不算你每次读一点数据 的时间,
最新文章
- Cesium原理篇:3最长的一帧之地形(2:高度图)
- [Leetcode] Roman to Integer
- appium案例
- SQL Server Management Studio无法记住密码
- Linux_07------Linux的用户和用户组管理
- JQuery中html、append、appendTo、after、insertAfter、before、insertBefore、empty、remove的使用
- gwt中java与js的相互调用
- 支付宝移动支付开发详细教程服务端采用.net mvc webapi(C#)
- VS2012下基于Glut 矩阵变换示例程序:
- ubuntu12.04.5安装openssh-server所引发的血案
- PHP MySQL 简介
- Java基本语法-----java数组(一维数组二维数组)
- android Native堆
- 【转】链接伪类(:hover)CSS背景图片有闪动BUG
- @Transactional 事务说明
- 20165231 2017-2018-2《Java程序设计》课程总结
- Pycharm2017常用快捷键
- UGUI 文字效果实现(Shadow\Gradient\Outline)
- Webpack 2 视频教程 004 - Webpack 初体验
- python: 序列化/反序列化及对象的深拷贝/浅拷贝
热门文章
- Java实现 LeetCode 142 环形链表 II(二)
- 一、kafka 介绍 &;&; kafka-client
- 源码分析(1)-HashMap(JDK1.8)
- ubuntu opensips环境搭建
- @codeforces - 674G@ Choosing Ads
- CentOS安装部署Mysql 5.7
- mybatis的嵌套查询与嵌套结果查询的不同
- add shell 出现 error: no devices/emulators found
- vue学习第一天:v-bind的使用(让属性绑定变量)
- 【WebLogic使用】3.WebLogic配置jndi数据源