比较redis命令:multi和mget

时间:2016-11-04 05:35:33

标签: redis

有两个系统共享一个redis数据库,一个系统只读取redis,另一个系统更新它。

读取系统非常繁忙以至于redis无法处理它,减少redis请求的数量,我发现" mget",但我也发现" multi&# 34。

  1. 我确定mget会减少请求的数量,但是" multi"照着做?我认为"多"将强制redis服务器保留有关此事务的一些信息,并逐个从客户端收集此事务中的请求,因此发送的请求总数保持不变,但返回的结果将合并在一起,对吗?

  2. 所以,如果我只是阅读KeyA,keyB,keyC in" multi"当另一个写入系统改变了KeyB的值时,会发生什么?

1 个答案:

答案 0 :(得分:1)

简答:您应该使用MGET

MULTI用于交易,不会减少请求数量。此外,将来不推荐使用MULTI命令 MIGHT ,因为有更好的选择:lua scripting

  
      
  1. 所以如果我只是在其他写入系统改变KeyB的值时读取KeyA,keyB,keyC in“multi”,会发生什么?
  2.   

由于MULTI(带EXEC)命令确保事务,所有三个GET命令(读取操作)都以原子方式执行。如果更新发生在读取操作之前,您将获得旧值。否则,您将获得新值。

顺便说一下,还有另一个减少RTT的选项:PIPELINE。但是,在您的情况下,MGET应该是最佳选择。