Redis之高并发
2021/9/11 19:08:29
本文主要是介绍Redis之高并发,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录- Redis 处理高并发
- 1 阻塞IO与非阻塞IO
- 2 Redis的线程模型
Redis 处理高并发
1 阻塞IO与非阻塞IO
Java在JDK1.4中引用NIO,阻塞IO与非阻塞IO的区别
在阻塞模式下,如果从数据流中读取不到指定大小的数据两,IO 就会阻塞。比如已知会有 10 个字节发送过来,但是目前只收到 4 个,还剩六个,此时就会发生阻塞。如果是非阻塞模式,虽然此时只收到 4 个字节,但是读到 4 个字节就会立即返回,不会等着,等另外 6 个字节来的时候,再去继续读取。
所以阻塞 IO 性能低于 非阻塞 IO。
如果有一个 Web 服务器,使用阻塞 IO 来处理请求,那么每一个请求都需要开启一个新的线程;但是如果使用了非阻塞 IO,基本上一个小小线程池就够用了,因为不会发生阻塞,每一个线程都能够高效利用。
2 Redis的线程模型
Redis 是单线程。单线程如何解决高并发问题的?
实际上,能够处理高并发的单线程应用不仅仅是 Redis,除了 Redis 之外,还有 NodeJS、Nginx 等等也是单线程。
Redis 虽然是单线程,但是运行很快,主要有如下几方面原因:
- Redis 中的所有数据都是基于内存的,所有的计算也都是内存级别的计算,所以快。
- Redis 是单线程的,所以有一些时间复杂度高的指令,可能会导致 Redis 卡顿,例如 keys。
- Redis 在处理并发的客户端连接时,使用了非阻塞 IO。
在使用非阻塞 IO 时,有一个问题,就是线程如何知道剩下的数据来了?
这里就涉及到一个新的概念叫做多路复用,本质上就是一个事件轮询 API。
- Redis 会给每一个客户端指令通过队列来排队进行顺序处理。
- Redis 做出响应时,也会有一个响应的队列。
这篇关于Redis之高并发的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24Redis资料:新手入门快速指南
- 2024-12-24Redis资料:新手入门教程与实践指南
- 2024-12-24Redis资料:新手入门教程与实践指南
- 2024-12-07Redis高并发入门详解
- 2024-12-07Redis缓存入门:新手必读指南
- 2024-12-07Redis缓存入门:新手必读教程
- 2024-12-07Redis入门:新手必备的简单教程
- 2024-12-07Redis入门:新手必读的简单教程
- 2024-12-06Redis入门教程:从安装到基本操作
- 2024-12-06Redis缓存入门教程:轻松掌握缓存技巧