揭秘Redis的高性能

121次围观   1个点赞   0人评论

作者头像

zeal

7个月前 发表于 技术专栏

揭秘Redis的高性能

121次围观   1个点赞   0人评论

作者头像

zeal

7个月前 发表于 技术专栏

揭秘 Redis 的高性能

在线上的项目中,一旦用户量上来,在 QPS 较高的情况下,我们的系统可能会出现响应缓慢,性能急剧下降,在分析性能瓶颈的过程中,会发现很多情况下,都会是因为数据库的性能导致的瓶颈。

内存访问

传统数据库之所以会慢,是因为很大一部分耗时操作都在磁盘 IO 上,计算机在执行指令的时候,最快是直接从内存中去拿,而 Redis就是纯内存访问,Redis 将所有数据放在内存中,内存的响应时间大约为 100 纳秒,这时 Redis 达到每秒万级别访问的重要基础。

非阻塞 I/O

Redis 使用 epoll 作为 I/O 多路复用技术的实现,在加上 Redis 自身的事件处理模型将 epoll 中的链接、读写、关闭都转换为事件,不在网络 I/O 上浪费过多的时间。

io多路复用
io多路复用

单线程

想要理解Redis 的单线程,需要搞清楚以下两个问题。

Redis 是单线程吗?

Redis 的单线程主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的,这也是 Redis 对外 提供键值存储服务的主要流程。但 Redis 的其他功能,比如持久化、异步删除、集群数据同步等,其 实是由额外的线程执行的。

Redis 单线程为什么还能这么快?

因为它所有的数据都在内存中,所有的运算都是内存级别的运算,而且单线程避免了多线程的切换性 能损耗问题。正因为 Redis 是单线程,所以要小心使用 Redis 指令,对于那些耗时的指令(比如 keys),一定要谨慎使用,一不小心就可能会导致 Redis 卡顿。

数据结构

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


推荐阅读

聊一聊 Redis 基本类型和使用场景Redis高可用架构系列(一)主从架构Redis 的持久化原理


如果觉得文章对你有帮助,可以点个赞,转载请注名出处。

标签:
评论 (0)
在这里说点什么吧... (取消回复)
留下一个好听的昵称吧!
好听的昵称!
请输入正确的邮箱格式!
不错的邮箱!
评论内容不能为空!
理性发言,和谐讨论!