比较redis命令:multi和mget

比较redis命令:multi和mget,redis,Redis,有两个系统共享一个redis数据库,一个系统只读取redis,另一个系统更新它 读取系统非常繁忙,redis无法处理它,为了减少对redis的请求数量,我找到了“mget”,但我也找到了“multi” 我相信mget会减少请求的数量,但“multi”也会这样做吗?我认为“multi”将迫使redis服务器保留一些关于此事务的信息,并从客户端逐个收集此事务中的请求,因此发送的请求总数保持不变,但返回的结果将合并在一起,对吗 所以,如果我只是在“multi”中读取KeyA,keyB,keyC,当另一

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

读取系统非常繁忙,redis无法处理它,为了减少对redis的请求数量,我找到了“mget”,但我也找到了“multi”

  • 我相信mget会减少请求的数量,但“multi”也会这样做吗?我认为“multi”将迫使redis服务器保留一些关于此事务的信息,并从客户端逐个收集此事务中的请求,因此发送的请求总数保持不变,但返回的结果将合并在一起,对吗

  • 所以,如果我只是在“multi”中读取KeyA,keyB,keyC,当另一个写入系统改变keyB的值时,会发生什么


  • 简短回答:您应该使用
    MGET

    MULTI
    用于事务,不会减少请求数量。另外,
    MULTI
    命令将来可能会被弃用,因为有一个更好的选择:
    lua scripting

  • 所以,如果我只是在“multi”中读取KeyA,keyB,keyC,当另一个写入系统改变keyB的值时,会发生什么
  • 由于
    MULTI
    (使用
    EXEC
    )命令确保事务,因此所有三个
    GET
    命令(读取操作)都以原子方式执行。如果更新发生在读取操作之前,您将获得旧值。否则,您将获得新值

    顺便说一句,还有另一种减少RTT的方法:
    管道
    。但是,在您的情况下,
    MGET
    应该是最佳选择