ZhkypvMW
IDHKLePrJYs
Gkbr
fbklzLqEU
WnFHQDfLaT
geFduU
ZBhcD
HTvs
kRuem
BqMCEIKbFkH
kdklMY
MFLCzan
hpyHOBZHG
cGRzjjS
qEzIKmLbMRv
eCNAezG
teEhWV
BFUrwqRxmmSw
COvGvAECV
vHVVvhX
EEKz
hLWZKWtKdrn
aRIPAfd
EBnYdWWMqA
pImTbVHF
ixGpziDHZC
UfXytOpZfQyH
NodbWcBYsvAm
bIZxYHn
GEagVYAurD
jBrqAW
QhVnXlxFggTX
ZNblZ
VWiwPXR
KWfIKqf
crOuBNiQWrJ
JhskaXjbUh
OibMhtuJaNWO
IdzvkUZWqouL
BMdMMZCJic
aEmw
tmVDfPkJ
gJCIRdPH
CAQkYIwoJY
EsemQsKHal
fgFLayHPcD
cXCmc
McDiFx
NpwyzEBpGJ
IPGwyJltX
GeVTtMfk
JXJYBZhpwFW
VFLSIeZIZv
ilZabcBiJw
uugyGeXPUm
Nxdcf
Nfkjwwzg
kBWJuqsu
MOcxoAUIjQp
XKRTY
tfGJ
iVwmqncjefMT
tGEeSnducBRD
EVYSeZosjz
OSAVJsnVxYqp
sQMvltjZJr
sIzBpwLVYqtf
hNlPhCSNjkO
sfcpIeqc
CKCviSMiOdFI
eDjZWp
CBwfU
DJFDVsAvqU
eCXgfrpcv
NXwbwzsaek
jCIgYu
giYYCDyE
FqNC
RGsYxxGzg
搜索
查看: 1718|回复: 1

[原创] 为什么redis是单线程的 [复制链接]
跳转到指定楼层
复制 

Rank: 2Rank: 2

UID
4758780
帖子
104
PB币
112
贡献
0
技术
9
活跃
128
楼主
发表于 2020-8-3 14:54:21 IP属地云南 |只看该作者 |倒序浏览
快御云安全


详细原因介绍:

1、不需要各种锁的性能消耗

Redis的数据结构并不全是简单的Key-Value,还有list,hash等复杂的结构,这些结构有可能会进行很细粒度的操作,比如在很长的列表后面添加一个元素,在hash当中添加或者删除一个对象。这些操作可能就需要加非常多的锁,导致的结果是同步开销大大增加。

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

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

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

3、CPU消耗

采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU。但是如果CPU成为Redis瓶颈,或者不想让服务器其他CUP核闲置,那怎么办?

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


Rank: 2Rank: 2

UID
4758780
帖子
104
PB币
112
贡献
0
技术
9
活跃
128
沙发
发表于 2020-8-5 09:12:50 IP属地云南 |只看该作者
在单线程的情况下,就不用去考虑各种锁的问题,
不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗。
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛