问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

redis为什么是单线程?在多核处理器下对主存的访问真的比多线程更有效率?未来有可能改用多线程吗?

发布网友 发布时间:2022-03-25 22:28

我来回答

3个回答

懂视网 时间:2022-03-26 02:49

redis是单线程的。

  

  Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、KeyValue数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。

  

  

热心网友 时间:2022-03-25 23:57

在一定程度上,多线程确实有优势

但不是一个简单的多线程,但每个线程都有自己的epoll模型,即多线程和混合多路复用。

我们通常以“但是”开头。但是,还要考虑Redis操作的对象。

它对内存中的数据结构进行操作。如果在多个线程中操作,则需要锁定对象。

最终,多线程性能得到了提高,但每个线程的效率显著下降。

这个程序的逻辑是非常复杂的

并不完全知道复述,数据结构简单的键-值,列表,散列,地图等等复杂的结构,这个结构可能非常细粒度的操作,比如添加一个元素的后面长列表,添加或删除一个对象的散列,等等。

这些操作也可以合成多/执行组。

这样的操作可能需要大量的锁,从而导致同步开销显著增加。

这也会增加吞吐量,但是响应延迟可能会增加。

Redis的选择是使用单个线程来突出其功能的灵活性。

单个线程上的任何原子操作都可以在几乎不需要成本的情况下实现,而且这样一个复杂的数据结构可以很容易地使用,即使有Lua脚本这样的功能。

这就要求多线程的价格要高得多

不是所有的KV数据库或内存数据库都应该是单线程的,比如ZooKeeper,它是多线程的,最终取决于作者自己的意愿和权衡。

单线程电源实际上非常强大,而且每个核心效率都非常高。

在今天的虚拟化环境中,您可以充分利用云环境来提高资源利用率。

多线程自然是能够比单线程更高的性能*,但在今天的计算环境中,即使是一个多线程的天花板也常常不能满足需要,需要进一步摸索更多的服务器集群方案。

多线程技术的方案还在不在,所以单线程,进程集群不失为一个现代的解决方案。

热心网友 时间:2022-03-26 01:15

我觉得你要是提这个问题说明你有一套固化的思维,所以我认为你这几个问题我还是可以帮你回答的。

单线程的选择

在权衡是使用一个线程来突出其自身功能的灵活性,Redis的选择。在单线程的基础上,任何原子操作都可以在几乎没有成本的情况下实现。如何在复杂的数据结构,可以很容易地应用,甚至使用Lua脚本的功能。多线程的价格要高得多。单线程的威力实际上非常强大,每核心效率也非常高,在今天的虚拟化环境当中可以充分利用云化环境来提高资源利用率。

对象的考虑

考虑使用对象操作。它运行的对象是内存中的数据结构。如果在多线程中操作,则需要锁定这些对象。最后,多线程性能得到改善,但每个线程的效率却严重下降。这个程序的逻辑很复杂。

程序多样执行

要知道redis数据结构不是一个简单的核心价值,还有列表,hash,map和一系列复杂的结构,这些结构可能是非常精细的操作,如添加一长串后面的一个元素,添加或删除一个对象的哈希值,等等。这些操作还可以合成一组多个/多个执行程序。在这样的操作中可能需要大量的锁,导致同步开销显著增加。一个糟糕的结果是吞吐量增加,但是响应延迟可能增加。

总结:我觉得未来也会是单线程的发展,而且越来越精细了。

Redis 到底是单线程还是多线程呢?

总结来说,Redis在处理网络I/O时是单线程的,但6.0版本引入的多线程是为了适应更高的性能需求。选择使用哪种模型,取决于具体的应用场景和硬件资源。

redis是个单线程的程序,为什么会这么快呢?

线程也不是影响吞吐量的重要因素。如第一点来说,一般情况下,程序处理内存数据的速度远高于网卡接收的速度。使用线程好处是可以同时处理多条连接,在极端情况下,可能会提高响应速度。使用 epoll 或 libevent 等因为异步非阻塞 IO 编程只能这么做。与之对应的是同步阻塞 IO 编程,使用多进程或多线程实现...

Redis的IO多路复用——单线程的理解(Redis6.0之后的多线程)

多线程处理可能涉及锁,并且涉及切换线程的消耗。耗时的命令会导致性能下降,而且无法发挥CPU多核的性能。Redis多线程只用来处理网络数据的读写和协议解析,命令的执行仍旧是单线程。这样的设计改变是为了不想让Redis因为引入多线程变得复杂。而且过去单线程的使用主要考虑CPU不是Redis的瓶颈,不需要多条线程并...

Redis 6.0多线程介绍

Redis将文件事件和时间事件进行抽象,时间轮询器会监听I/O事件表: 一旦有文件事件就绪,Redis就会优先处理文件事件, 接着处理时间事件。 在上述所有事件处理上,Redis都是以单线程形式处理,所以说Redis是单线程的。 处理过程见下图 Redis基于Reactor模式开发了自己的I/O事件处理器,也就是文...

英特尔i7-12600kf与i5-14500kf的性能差别多少?

首先,从核心数量和线程数来看,14600kf可能拥有更多的核心和线程,这使得它在处理多线程任务时具有更高的效率。例如,如果14600kf是六核心或八核心处理器,而12600kf是四核心或六核心处理器,那么在前者的多线程性能上会有明显的优势。其次,频率方面,14600kf的基础频率和睿频可能都比12600kf要高。这意味...

为什么说redis不是单线程 单线程redis为什么这么快 redis单线程为什么能支持并发 什么是多核处理器 redis单进程单线程 redis集群还是单线程吗 redis单线程如何处理并发 处理器单核和多核区别 多核处理器的手机好吗
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
没有钱的充值卡能充钱进去吗? 多媒体计算机是 米游社原神在哪签到 黑名单短信怎么拦截? 电脑打开网页总显示内存不足,该怎么办啊? 为什么打开网页提示内存不足? 我的电脑怎么老是提醒内存不足? 为什么我的电脑总是提醒内存不足? 苹果迅雷ios版怎么下载链接 女人梦见捡硬币 redis是单进程多线程的吗 为什么说Redis是单线程的以及Redis为什么这 2.Redis为什么是单线程单进程的 redis处理客户端请求是用多线程方式处理的吗 Redis到底是多线程还是单线程 为什么三星尽量买韩版? 韩版三星s10 5g版是否可以刷国行的官方rom? 韩版三星s10 5g要不要刷国行?不刷本地化怎么样?韩版和国行区别是什么? OPPO r15参数有什么亮点吗? 关于OPPO R15新机,你知道多少 OPPOR15(PACM00)基本配置参数? OPPOR15参数?够快吗? OPPOR15怎么样 oppor15参数有知道的吗? OPPO R15参数?有谁知道吗? OPPOR15参数?怎么样? OPPOR15被称为拍照手机为什么不能拍微距?十公分以内的都糊了。 oppor15长多少厘米 linux下子目录下的文件对根目录复制移动的命令 linux 怎样将一个文件移动到上级目录 redis队列是不是线程 redis 的线程模型是怎么样的? Redis是单线程的,Redis为什么这么快 redis为什么单线程 redis是个单线程的程序,为什么会这么快呢?每秒10000 redis 是线程安全吗 Redis为什么使用单进程单线程方式 既然redis是单线程模型,怎么会出现并发访问操作同一份数据 redis原理,单线程怎么做到高并发的 redis如何实现多线程 redis 单线程 怎么还有并发问题 单进程单线程的Redis如何能够高并发 CPU超线程对游戏性能有影响吗? 超线程技术对玩游戏有用吗 i7的超线程技术会降低游戏效果吗 超线程对游戏 真的有影响吗 超线程CPU会不会降低游戏性能? CPU超线程技术对游戏用处大么??请教! 流言终结者系列:CPU超线程对游戏帧数有多大影 i7 开超线程和不超线程对游戏有影响吗?