| 失效链接处理 |
|
Redis 为什么这么快?
相关截图:
![]() 主要内容:
先把结论撂这儿
Redis 快,主要靠这四件事叠在一起:
数据在内存里,读写不用去转磁盘。
主线程单线程执行命令,省掉锁和上下文切换。
IO 多路复用,一个线程盯着成千上万个连接。
数据结构够精简,常用操作基本是 O(1) 或接近 O(1)。
下面分开说。
数据全在内存里
传统关系型数据库要把数据落在磁盘上。磁盘再怎么优化,也得经历「找磁道、转盘片、读数据」这一套,慢是物理层面的慢。Redis 不一样,热数据直接躺在内存里。CPU 伸手就能拿到,中间少了那层机械往返。
左边像翻旧仓库找文件,右边像桌上的便签本随手一翻。这个差距,不是调参能抹平的。
当然,Redis 也有 RDB、AOF 这些持久化手段,防止断电把数据带走。但日常读写走的是内存路径,持久化是后台的事,不挡主路上的请求。
单线程,听起来很慢,其实很快
很多人第一次听说 Redis 是单线程,都会愣一下:现在 CPU 都十几核了,一个线程不浪费吗?
这里要分清楚:Redis 并不是整个进程只有一个线程。持久化、异步删除这些活,会交给别的线程。真正处理客户端命令的主路径,默认是单线程。
单线程有个很实在的好处:不用加锁。
多线程听着热闹,一旦多个线程同时改同一块数据,就得加锁、排队、醒来再跑。锁一多,CPU 大量时间耗在等待和切换上。Redis 的命令本身大多很轻,真正的瓶颈往往在网络 IO,不在算。这种场景下,一个线程老老实实把命令做完,反而更稳、更快。
可以把它想成窗口办业务:如果每笔业务只要几秒钟,开很多窗口还要互相抢章、排队交接,还不如一个熟练柜员一条龙办完。
|


苏公网安备 32061202001004号
