0%

Redis 常用操作

延迟执行事务有助于提升性能 因为Redis在执行事务的过程中,会延迟执行已入队的命令直到客户端发送EXEC命令为止。因此很多Python客户端在内的很多Redis客户端都会等到事务包含的所有命令都出现了之后,才一次性的将multi命令、要在事务中执行的一系列命令,以及Exec命令全部发送给Redis,然后等待直到接收到所有命令的回复为止。这种“一次性发送多个命令,然后等待所有回复出现”的做法通常被称为流水线(pipelining),它可以通过介绍客户端与Redis服务器之间的网络通信次数来提升Redis在执行多个命令时的性能。

在需要执行大量命令的情况下,即使命令实际上并不需要放到事务里面执行,但是为了通过一个发送所有命令来减少通信次数并降低延迟值,用户也可能会将命名包裹在MULTI 和 EXEC 里面。遗憾的是 MULTI 和 EXEC 并不是免费的–它们也会消耗资源,并且可能会导致其他重要的命令被延迟执行。

如果Redis和Web服务器通过局域网进行连接,那么它们之间的每次通信往返大概需要耗费一两毫秒,因此需要进行2次或者5次通信往返的update_token() 函数大概需要花费210毫秒,按照此速度,单个Web服务器线程每秒可以处理100500个请求。