当前位置: 首页 > news >正文

Redis:Redis为什么快

文章目录

  • 一、Redis为什么快
  • 二、Redis的单线程模型
  • 三、高效的数据结构
    • 1、跳表
  • 四、内存的高效使用
  • 五、I/O多路复用机制
  • 六、网络优化

一、Redis为什么快

单机的Redis每秒可以支撑十几万的并发,相对于MySQL来说,性能是MySQL的十几倍。速度快主要有一下因素:

  • Redis的单线程模型。
  • 高效的数据结构。
  • 内存的高效使用。
  • I/O多路复用机制。

二、Redis的单线程模型

首先需要明确一点的是:Redis单线程模型并不意味着Redis只有一个线程在工作,Redis使用了一个主线程来处理所有的客户端请求,其他的线程负责数据的持久化、客户端连接管理等任务。

  • 多线程的目的:就是通过并发的方式来提升I/O的利用率和CPU的利用率。由于Redis是基于纯内存操作,CPU资源不是其性能瓶颈
  • Redis对客户端请求使用单线程避免了多线程环境下线程的上下文切换、加锁等开销。这样就使得Redis在执行命令时有极高的性能。
    在这里插入图片描述
    文件事件分派器处理器某些情况可以并发的去执行。

三、高效的数据结构

Redis为什么快的另外一个原因就是Redis具有高效的内存数据结构。Redis为每种类型都提供了特定的内存数据结构,这些内存数据结构不仅优化了内存的使用,还提高了操作效率。
在这里插入图片描述

1、跳表

将有序的链表改造成近似“折半查找”的算法,可以进行快速的删除、插入、查找操作。
在这里插入图片描述

四、内存的高效使用

内存优化策略

  • 配置文件优化:在Redis的配置文件中(如redis.conf),设置maxmemory以限制Redis实例能使用的最大内存量,并配置合适的内存淘汰策略(如allkeys-lru、volatile-lru等),以在内存达到上限时自动淘汰不常用的数据。
  • 内存碎片整理:定期执行MEMORY PURGE命令清理碎片,优化内存使用。
  • 使用压缩功能:Redis支持对字符串和列表中的重复数据进行压缩,以减少内存占用。

五、I/O多路复用机制

因为Redis的处理速度很快,一个线程可以快速的轮询所有的请求。这样不仅减少了线程切换的开销,还提高了系统的吞吐量。

六、网络优化

Redis使用了TCP/IP协议来进行网络通信,使得数据的传输更加的稳定和高效;Redis使用了一种“Pipeline”的技术来减少网络往返次数。通过pipeline,它允许客户端一次性发送多个命令到服务器,并等待服务器一次性返回所有命令的结果,从而显著减少网络往返次数,提高命令执行的效率。


http://www.mrgr.cn/news/7803.html

相关文章:

  • 若依/vue2引入threejs展示glb/gltf模型,以及画布截图功能
  • 如何选择需求跟踪管理软件?8款优质推荐
  • 数据结构-栈与队列-数组和链表的推广运用-第六天
  • 云计算实训33——高并发负载均衡项目(eleme)
  • ​14:00面试,14:06就出来了,问的问题有点变态。。。
  • Pytorch cat()与stack()函数详解
  • 嵌入式学习(网络通信UDP\TCP)
  • iOS工程:获取手机相册权限,iOS原生系统弹窗, Privacy隐私政策选择,如何添加系统弹出并修改描述文字
  • 如何在 Ubuntu 系统中安装PyCharm集成开发环境?
  • 当前A股平均市盈率
  • 回调函数的使用
  • 如何使用ssm实现公司项目管理系统设计与实现
  • (第三期)书生大模型实战营——OpenXLab部署InternLM2实践——上传模型
  • Vue.js实战教程:如何一步步构建HSK在线学习平台
  • API 的多版本管理,如何在 Apifox 中操作?
  • 【日常记录-Linux】dnf工具
  • React 使用ref属性调用子组件方法(也可以适用于父子传参)
  • FastAPI+React18开发通用后台管理系统用户功能实战
  • staticHeader(静态标头)
  • BUG——GT911上电后中断一直触发