redis(15):管道

客户端和Redis使用TCP协议连接。不论是客户端向Redis发送命令还是Redis向客户端返 回命令的执行结果,都需要经过网络传输,这两个部分的总耗时称为往返时延。

根据网络性能不同,往返时延也不同,大致来说到本地回环地址(loop backaddress)的往返时延在数量 级上相当于 Redis 处理一条简单命令(如 LPUSH list 1 2 3)的时间。如果执行较多的命令,每个命令的往返时延累加起来对性能还是有一定影响的。


一、不使用管道时

在执行多个命令时每条命令都需要等待上一条命令执行完(即收到Redis的返回结果)才 能执行,即使命令不需要上一条命令的执行结果。如要获得post:1、post:2和post:3这3个键中 的title字段,需要执行3条命令,示意图如图所示。

在这里插入图片描述


二、使用管道时

Redis 的底层通信协议对管道(pipelining)提供了支持

通过管道可以一次性发送多条 命令并在执行完后一次性将结果返回,当一组命令中每条命令都不依赖于之前命令的执行结果时就可以将这组命令一起通过管道发出。管道通过减少客户端与 Redis 的通信次数来实现 降低往返时延累计值的目的,如图所示。

在这里插入图片描述

已标记关键词 清除标记
<p> db服务器连接mysql+redis高可用高性能框架干货<br /> 1、使用c++语言,vs2019开发垮平台[windows和linux]连接MySql和redis框架。<br /> 2、使用MySql持久化玩家数据,redis做玩家数据缓存层,redis不做数据持久化。<br /> mysql搭配redis工作效率非常高效,就好比男女搭配干活不累,没有redis,mysql也能独立<br /> 很好的完成用户读写请求。有了redis,用户访问数据的效率更高,时间更短,快速的完成请求。<br /> 3、讲解如何保持mysql和redis数据强一致性策略,并在代码里实现。每次启动redis,使用管道技术,从mysql<br /> 批量导入活跃用户数据到redis中,并设置过期时间.<br /> 4、教程使用线程池技术,每个线程拥有自己独立的数据,线程绑定类。每一个实例就包含一个线程<br /> 每个线程数据里包含:mysql连接器、redis连接器、内存回收池、安全的串行队列、条件变量、互斥量<br /> 保证线程内的数据安全。<br /> 5、工作原理:<br /> 没有请求时,各个工作线程处于休眠状态。<br /> 有读写请求时,从线程池获取一个线程,添加读写请求,把数据推送到线程工作队列中。<br /> 然后工作线程获取队列的数据,进行串行工作任务安排,进行mysql数据库读写操作,以及redis读写数据操作,<br /> 当完成工作任务时,执行下一个工作任务,同时把处理结果推送到逻辑线程,把数据给用户。<br /> 6、用户读数据策略:用户获取数据首先是先从redis查找数据,redis命中,<br /> 返回数据给玩家,redis命中失败,mysql中查找数据,然后写入数据到redis中,返回数据给用户。<br /> 7、用户写数据策略:用户先从redis中删除数据,然后写数据到mysql中,最后再把数据写入到redis中,保持数据一致性。<br /> 8、教程是一个干货教程,不是新手教程,mysql基础语法讲解的少,redis有讲解基础系列。<br /> 教程讲解的是如何搭建一个支持高并发,高性能的读写数据库框架,使用mysql+redis搭配的高可用、高性能框架。<br /> 该套框架在多个项目使用过,也在棋牌类项目里面使用过。 </p>
相关推荐
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页