我们在前面的你文章中学到了set、mset、get、mget 这四个指令,这四个指令中有两个单指令set和get,有两个多指令mset和mget。所谓的单指令可以简单地理解为告诉Redis服务器要干某个工作,而多指令就是告诉Redis服务器要干某些工作。那么这里就遇到了一个问题,我们什么时候用单指令什么时候用多指令呢?我们以set/mset为例,来讲一下。 向Redis服务器发送新增和修改命令其实是由三个步骤:发送、执行、返回。图示如下:
应用服务向Redis服务发送命令和数据,Redis在接收到命令和数据后执行相应的操作,操作执行完成后再将执行结果返回给应用服务。这里我们假每个步骤的执行时间都是2毫秒,那么如果我们使用set来发送数据的话,三个步骤总共用时2 2 2=6毫秒,当我们需要发送多条数据,例如1000条,那么总用时就是(2 2 2)1000=6000毫秒【这里只是举例,实际Redis不可能1000条数据用时这么大】。那么如果使用mset一次性将1000条数据都全部发送给Redis,总用时为2 21000 2=1004毫秒。由此可以看出,在进行大量数据操作的情况下最好使用多指令进行操作。但这也仅仅是个建议,我们还需要考虑到带宽问题、应用服务器和Redis服务器的性能。