Redis 命令 HMSET 的字段数是否有任何限制?

Jas*_*son 8 redis

Redis 命令 HMSET 字段的最大数量限制是多少?如果我通过 HMSET 将 100000 个字段设置为一个键,与使用每个字段作为键相比是否会导致性能问题?

Dhr*_*hak 8

它相当大,64 位系统中为 2^64-1,32 位系统中为 2^32 -1, https://groups.google.com/d/msg/redis-db/eArHCH9kHKA/UFFRkp0iQ4UJ

1) 每个 Redis 数据库中的键数:64 位系统中为 2^64-1。2^32-1 在 32 位系统中。2) 每个散列中的散列字段数:64 位系统中为 2^64-1。2^32-1 在 32 位系统中。

鉴于 32 位实例最多具有 4GB 的可寻址空间,因此无法达到该限制。对于 64 位实例,考虑到 2^64-1 有多大,这个限制是无法达到的。

因此,对于每个实际的观点,请考虑仅受您拥有的 RAM 数量限制的键和哈希。

萨尔瓦多


Chr*_*ner 8

我使用 lua 客户端为此做了几个快速测试。

我尝试使用单个 hmset 命令、单个 hmset 命令和流水线化的单个命令存储 100,000 个字段,并计算它们完成所需的时间:

hmset 100000 字段:3.164817

hmset 单个字段:9.564578

管道中的 hmset:4.784714

我没有尝试更大的值,因为 1,000,000+ 花费的时间太长,但如果您想修补,代码就在这里。https://gist.github.com/kraftman/1f15dc75649f07ee044eccab5379a8e3

请记住,根据应用程序的不同,一旦添加太多字段,哈希的存储效率就会降低(可以设置“太多”,请参阅此处了解更多信息。