1. pipeline操作Redis数据库
Redis的 C - S 架构:
• 基于客户端-服务端模型以及请求/响应协议的TCP服务。
• 客户端向服务端发送一个查询请求,并监听Socket返回。
• 通常是以阻塞模式,等待服务端响应。
• 服务端处理命令,并将结果返回给客户端。
存在的问题:
• 如果Redis服务端需要同时处理多个请求,加上网络延迟,那么服务端利用率不高,效率降低。
解决的办法:
• 管道pipeline
pipeline的介绍
管道pipeline
• 可以一次性发送多条命令并在执行完后一次性将结果返回。
• pipeline通过减少客户端与Redis的通信次数来实现降低往返延时时间。
实现的原理
• 实现的原理是队列。
• Client可以将三个命令放到一个tcp报文一起发送。
• Server则可以将三条命令的处理结果放到一个tcp报文返回。
• 队列是先进先出,这样就保证数据的顺序性。
pipeline操作Redis数据库
实现步骤
1. 创建Redis管道
2. 将Redis请求添加到队列
3. 执行请求
@@@ 代码自行实现,不展示。
2. 生产者消费者设计模式
问题:
• 我们的代码是自上而下同步执行的。
• 发送短信是耗时的操作。如果短信被阻塞住,用户响应将会延迟。
• 响应延迟会造成用户界面的倒计时延迟。
解决:
• 异步发送短信
• 发送短信和响应分开执行,将发送短信从主业务中解耦出来。
生产者消费者设计模式介绍
• 为了将发送短信从主业务中解耦出来,我们引入生产者消费者设计模式。
• 它是最常用的解耦方式之一,寻找中间人(broker)搭桥,保证两个业务没有直接关联。
总结:
• 生产者生成消息,缓存到消息队列中,消费者读取消息队列中的消息并执行。
• 由网站生成发送短信消息,缓存到消息队列中,消费者读取消息队列中的发送短信消息并执行。
3. celery 介绍、安装和处理
思考:
• 消费者