Redis MGET限制

D15*_*159 6 redis

我们计划将MGET用于我们的一个系统.在基准测试期间,我们能够在生菜中的一个MGET调用中检索1百万个密钥的值,并且非常惊讶.

我一直试图找到的是MGET的局限性.特别,

  1. 在一次MGET呼叫中可以检索的密钥数量是否有限制?
  2. 单个MGET调用返回的数据大小是否有限制?

for*_*ack 11

在一次MGET呼叫中可以检索的密钥数量是否有限制?

从理论上讲,限制是int的最大值:0x7FFFFFFF.但是,实际上,在单个Redis实例中不能有这么多键(它需要太多内存).

单个MGET调用返回的数据大小是否有限制?

从理论上讲,没有限制.但是,实际上,Redis会在发送到客户端之前将返回的值保存在内存中,因此如果您尝试使用MGET太多密钥,则会出现OOM问题.

总之,来自Redis的太多密钥是一个坏主意MGET:它耗费了太多内存,并且长时间阻止了Redis.