Redis的高性能怎么做到的?

Redis作为高性能NOSQL数据库,其高性能源于高效数据结构、内存存储、I/O多路复用、写时拷贝等技术。基于内存存储避免了硬盘IO操作,使用哈希表实现O(1)的查找效率。IO多路复用通过Reactor单线程模式减少上下文切换和阻塞,写时拷贝确保数据完整性且不影响服务。管道通讯批量处理命令,降低网络交互时间。
摘要由CSDN通过智能技术生成

Redis的高性能怎么做到的?

Redis这个NOSQL数据库在计算机界可谓是无人不知,无人不晓。只要涉及到数据那么就需要数据库,数据库类型很多,但是NOSQL的kv内存数据库也很多,redis作为其中一个是怎么做到行业天花板的呢?是怎么做到高性能的呢?怎么做到高可用的呢?今天这篇八股文我就整理一些redis的设计写写,本篇还是偏关于高性能这一块。

高效数据结构

Redis的数据库相比传统的关系数据库,在数据结构上也是比较特殊的,它的所有数据类型都可以看做是一个map的结构,key作为查询条件。

Redis的高性能怎么做到的?

基本数据结构

Redis基于KV内存数据库,它内部构建了一个哈希表,根据指定的KEY访问时,只需要O(1)的时间复杂度就可以找到对应的数据,而value的值又是一些拥有各种特性的数据结构,这就给redis在数据操作的时候提供很好的性能了。

基于内存存储

相比传统的关系数据库,数据文件可能以lsm tree 或者 b+ tree形式存在硬盘上,这个时候读取文件要有io操作了,而redis在内存中进行,并不会大量消耗CPU资源,所以速度极快。

Redis的高性能怎么做到的?

存储金字塔

内存从上图可以看到它介于硬盘和cpu缓存中间的,相比硬盘查找数据肯定是快的,当然这里笔者个人见解上,如果关系型数据库把一些平凡操作的数据库也放置在内存中缓存,也会得到一些性能的提升,像操作系统里面缺页异常一样处理,把数据片段通过一些特殊算法缓存在内存里面,减少文件io的开销。

io多路复用

传统对于并发情况,假如一个进程不行,那搞多个进程不就可以同时处理多个客户端连接了么?多进程是可以解决一些并发问题,但是还是有一些问题,上下文切换开销,线程循环创建,从PCB来回恢复效率较

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值