广告
返回顶部
首页 > 资讯 > 数据库 >Redis的高并发和快速原因
  • 338
分享到

Redis的高并发和快速原因

2024-04-02 19:04:59 338人浏览 泡泡鱼
摘要

这篇文章给大家分享的是Redis的高并发和快速原因。小编觉得挺实用的,因此分享给大家学习。如下资料是关于Redis的高并发和快速原因的内容。1.redis是基于内存的,内存的读写速度非常快;2.redis是

这篇文章给大家分享的是Redis高并发和快速原因。小编觉得挺实用的,因此分享给大家学习。如下资料是关于Redis的高并发和快速原因的内容。

1.redis是基于内存的,内存的读写速度非常快;

2.redis是单线程的,省去了很多上下文切换线程的时间;

3.redis使用多路复用技术,可以处理并发的连接。非阻塞io 内部实现采用epoll,采用了epoll+自己实现的简单的事件框架。epoll中的读、写、关闭、连接都转化成了事件,然后利用epoll的多路复用特性,绝不在io上浪费一点时间。

下面重点介绍单线程设计和IO多路复用核心设计快的原因。

Redis的高并发和快速原因

为什么Redis是单线程的

1.官方答案

因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或者网络带宽。既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理成章地采用单线程的方案了。

2.性能指标

关于redis的性能,官方网站也有,普通笔记本轻松处理每秒几十万的请求。

3.详细原因

1)不需要各种的性能消耗

Redis的数据结构并不全是简单的Key-Value,还有list,hash等复杂的结构,这些结构有可能会进行很细粒度的操作,比如在很长的列表后面添加一个元素,在hash当中添加或者删除

一个对象。这些操作可能就需要加非常多的锁,导致的结果是同步开销大大增加。

总之,在单线程的情况下,就不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗。

2)单线程多进程集群方案

单线程的威力实际上非常强大,每核心效率也非常高,多线程自然是可以比单线程有更高的性能上限,但是在今天的计算环境中,即使是单机多线程的上限也往往不能满足需要了,需要进一步摸索的是多服务器集群化的方案,这些方案中多线程的技术照样是用不上的。

所以单线程、多进程的集群不失为一个时髦的解决方案。

3)CPU消耗

采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU。

但是如果CPU成为Redis瓶颈,或者不想让服务器其他CUP核闲置,那怎么办?

可以考虑多起几个Redis进程,Redis是key-value数据库,不是关系数据库,数据之间没有约束。只要客户端分清哪些key放在哪个Redis进程上就可以了。

Redis单线程的优劣势

1.单进程单线程优势

代码更清晰,处理逻辑更简单 不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗 不存在多进程或者多线程导致的切换而消耗CPU

2.单进程单线程弊端

无法发挥多核CPU性能,不过可以通过在单机开多个Redis实例来完善;

IO多路复用技术

redis 采用网络IO多路复用技术来保证在多连接的时候, 系统的高吞吐量。

多路-指的是多个Socket连接,复用-指的是复用一个线程。多路复用主要有三种技术:select,poll,epoll。epoll是最新的也是目前最好的多路复用技术。

这里“多路”指的是多个网络连接,“复用”指的是复用同一个线程。采用多路
I/O
复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络IO的时间消耗),且Redis在内存中操作数据的速度非常快(内存内的操作不会成为这里的性能瓶颈),主要以上两点造就了Redis具有很高的吞吐量。

Redis的高并发和快速原因

Redis高并发快总结

Redis的高并发和快速原因

1. Redis是纯内存数据库,一般都是简单的存取操作,线程占用的时间很多,时间的花费主要集中在IO上,所以读取速度快。

2. 再说一下IO,Redis使用的是非阻塞IO,IO多路复用,使用了单线程来轮询描述符,将数据库的开、关、读、写都转换成了事件,减少了线程切换时上下文的切换和竞争。

3. Redis采用了单线程的模型,保证了每个操作的原子性,也减少了线程的上下文切换和竞争。

4. 另外,数据结构也帮了不少忙,Redis全程使用hash结构,读取速度快,还有一些特殊的数据结构,对数据存储进行了优化,如压缩表,对短数据进行压缩存储,再如,跳表,使用有序的数据结构加快读取的速度。

5. 还有一点,Redis采用自己实现的事件分离器,效率比较高,内部采用非阻塞的执行方式,吞吐能力比较大。

以上就是Redis的高并发和快速原因,看完之后是否有所收获呢?如果想了解更多相关内容,欢迎关注编程网数据库!

您可能感兴趣的文档:

--结束END--

本文标题: Redis的高并发和快速原因

本文链接: https://www.lsjlt.com/news/36820.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Redis的高并发和快速原因
    这篇文章给大家分享的是Redis的高并发和快速原因。小编觉得挺实用的,因此分享给大家学习。如下资料是关于Redis的高并发和快速原因的内容。1.redis是基于内存的,内存的读写速度非常快;2.redis是...
    99+
    2022-10-18
  • Redis的高并发和快速原因有哪些?
                                 ...
    99+
    2022-10-18
  • redis单线程速度快的原因
    小编给大家分享一下redis单线程速度快的原因,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!Redis之所以执行速度很快,主要依赖于以下几个原因:(一)纯内存操作,避免大量访问数据库,减少直接...
    99+
    2022-10-18
  • redis单线程执行速度这么快的原因
    这篇文章主要介绍了redis单线程执行速度这么快的原因,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。Redis之所以执行速度很快,主要依赖于以下...
    99+
    2022-10-18
  • Redis单线程能支撑高并发的原因是什么
    本篇内容介绍了“Redis单线程能支撑高并发的原因是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!几种...
    99+
    2022-10-18
  • redis可以能够快速执行的原因有哪些
    小编给大家分享一下redis可以能够快速执行的原因有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!redis是单线程:单线程...
    99+
    2022-10-18
  • node能高并发的原因是什么
    本篇内容主要讲解“node能高并发的原因是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“node能高并发的原因是什么”吧! 因为...
    99+
    2022-10-19
  • Redis的查询很快的原因解析及Redis如何保证查询的高效
    目录Redis如何保证高效的查询效率为什么Redis比较快Redis中的数据结构1、简单动态字符串2、链表3、字典4、跳表5、整数数组6、压缩列表为什么单线程还能很快基于多路复用的高...
    99+
    2022-11-13
  • 快速响应:Go WaitGroup在高并发场景下的应用
    在高并发场景下,Go的WaitGroup是一种有效的工具,用于等待一组goroutine完成其任务。WaitGroup有三个方法可以...
    99+
    2023-10-12
    Go语言
  • 用Python和npm打造更快速、更高效的Web开发项目!
    Web开发是一个需要不断进化的领域。每天都有新的技术和工具出现,帮助开发人员更快、更好地完成项目。Python和npm是两个广泛使用的工具,它们可以帮助开发人员更快速、更高效地完成Web开发项目。 本文将介绍如何使用Python和npm来...
    99+
    2023-11-13
    npm apache django
  • Bash和Git:如何在Linux上进行快速而高效的开发?
    在Linux上进行开发可能会让一些人感到陌生,但是如果您熟悉Bash和Git,您将能够轻松地进行快速而高效的开发。在本文中,我们将介绍一些Bash和Git的基本概念和技巧,以帮助您在Linux上进行更好的开发。 Bash是一种Unix S...
    99+
    2023-08-02
    bash linux git
  • PHP 容器函数和 Git:如何让您的开发更加快速和高效?
    在软件开发中,高效和快速是非常重要的。为了实现这一目标,开发者们需要使用一些工具和技术,以便更好地管理和开发他们的应用程序。在本文中,我们将探讨一些使您的开发更加高效和快速的工具和技术,其中包括 PHP 容器函数和 Git。 PHP 容器...
    99+
    2023-08-27
    容器 函数 git
  • ASP和Laravel:如何在Windows上实现快速响应和高效的开发流程?
    在Windows上实现快速响应和高效的开发流程是每个开发人员都希望实现的目标。而ASP和Laravel是两种流行的Web应用程序框架,它们都可以帮助开发人员在Windows上实现这个目标。本文将介绍ASP和Laravel的优势以及如何在W...
    99+
    2023-10-31
    laravel windows 响应
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作