redis 学与思系列(4)

前言

本篇文章主要结合自己的理解重点解答以下几个问题:

  • 单线程的 Redis 为什么这么快?
  • Pipeline有什么好处,为什么要用pipeline?

这些问题都和redis 内部是如何执行命令有关。

redis 内部命令的执行方式

我们知道redis采用的是单线程和I/O多路复用模型来实现高性能的内存数据库服务的。
复制代码

如图,执行每一条命令的时候,都会经过以下几个过程:

  • 发送命令
  • 执行命令
  • 返回结果
    如果是同时发送多条命令时,这些命令都会进入一个队列中,然后逐步被执行。

一. 单线程的 Redis 为什么这么快?

 > 纯内存访问,redis 的所有数据都放在内存中,在内存中执行相应的指令响应非常快;
 > 非阻塞I/O,redis采用epoll作为IO 多路复用技术的实现,在加上redis自身的事件模型,减少了网络I/O消耗时间
 > 单线程架构:避免线程切换和竞态产生的消耗。
 > Redis 内部使用hash结构,读取速度快,还有一些特殊的数据结构,对数据存储进行了优化,如压缩表,对短数据进行压缩存储,再如,跳表,使用有序的数据结构加快读取的速度。
复制代码

二. Pipeline有什么好处,为什么要用pipeline?

我们知道每发送一条redis命令,都会经过(1)发送命令,(2)命令排队,(3)执行命令和(4)返回结果这几步,如果将这(1)(4)步的消耗时间称为一个RRT(往返时间),采用pipeline 可以极大的减少RRT, 因为采用pipeline 是将多条命令同时发送到服务端,以及多条命令的响应结果同时发送到客户端,这样采用批量的操作方式可以极大的减少这2部分的时间.

比如如果有n条命令,如果一条条发送,那么就需要n次RRT, 如果采用pipiline机制的话就只需要1次RRT

 当然redis 提供了部分批量操作命令也能实现相同的效果
复制代码

三.小结

本文结合自己的理解简单的解答了一下上面的2个问题,下篇文章主要谈谈redis持久化机制相关的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值