【Redis】Pipeline管道优化技术

一、技术产生背景

1. Redis的C-S架构背景:

  • 基于客户端-服务端模型以及请求/响应协议的TCP服务。
  • 客户端向服务端发送一个查询请求,并监听Socket返回。
  • 通常是以阻塞模式,等待服务端响应。
  • 服务端处理命令,并将结果返回给客户端。

2. Redis的C-S架构存在的问题:

  • 如果Redis服务端需要同时处理多个请求,加上网络延迟,那么服务端利用率不高,效率降低。

3. 解决办法

  • 管道pipeline

  • 解决效果如下所示
    image



二、技术介绍

1. Pipeline管道介绍

  • 可以一次性发送多条命令并在执行完后一次性将结果返回。
  • pipeline通过减少客户端与Redis的通信次数来实现降低往返延时时间

2. Pipeline管道实现原理

  • 实现的原理是队列。
  • Client可以将三个命令放到一个tcp报文一起发送。
  • Server则可以将三条命令的处理结果放到一个tcp报文返回。
  • 队列是先进先出,这样就保证数据的顺序性。


三、技术使用

1. 实现步骤

  1. 创建Redis管道
  2. 将Redis请求添加到队列
  3. 执行请求

2. 代码示例

# pip install django_redis
from django_redis import get_redis_connection

# 创建Redis管道
pl = redis_conn.pipeline()
# 将Redis请求添加到队列
pl.setex('sms_%s' % mobile, constants.SMS_CODE_REDIS_EXPIRES, sms_code)
pl.setex('send_flag_%s' % mobile, constants.SEND_SMS_CODE_INTERVAL, 1)
# 执行请求
pl.execute()
posted @ 2022-04-24 17:57  陈景中  阅读(162)  评论(0编辑  收藏  举报