Redis 是否保留前缀类型键的所有字符?

Does Redis keep all chars from prefixed kind of keys?

我可能有 100 英里长,但部分静态密钥,例如:

someReal...LongStaticPrefix:12345
someReal...LongStaticPrefix:12
someReal...LongStaticPrefix:123456

只有密钥的最后一部分是动态的,其余部分是静态的。

Redis 是将所有键都保留很长,还是创建内部别名或类似的东西?
我应该担心存储还是性能?

或者如果我让内部别名做键以保持它们简短会更好吗?

Redis 确实保留了整个密钥。这个长前缀会影响你的内存使用。

鉴于redis使用散列映射来存储键,对性能的影响很小。哈希映射负载因子通常在 0.5 到 1 之间。这意味着每个哈希槽通常只有一个或两个键。因此,性能影响是长密钥的额外网络负载、对其进行散列的时间更长,以及在散列槽中与一个或两个密钥进行比较的时间更长。它可能可以忽略不计,除非你的前缀真的很长

考虑使用更短的键前缀。

在考虑使用哈希结构 (HSET) 之前,请考虑您是否正在使用 Redis 集群,或者您最终是否需要。单个哈希键不能分片。

一个小的优化:考虑使用后缀在哈希槽链上进行更快的比较