【问题标题】:Using GUID (or similar) has performance penalty in Redis?在 Redis 中使用 GUID(或类似的)会降低性能吗?
【发布时间】:2023-03-11 18:14:01
【问题描述】:

使用 GUID 或 ulong 键会影响 Redis DB 性能吗?

类似:Does name length impact performance in Redis?

【问题讨论】:

标签: redis


【解决方案1】:

这个问题是一个老问题,但其他答案有点误导。 Eric 的回答与 Redis 完全无关。 Pfreixes 的回答是基于个人假设,完全是错误的。

事实上,使用 GUID 键(性能方面)相当安全,因为即使是 300 多个字符的键也不会显着影响 O(1) 操作的性能。检查此基准:Does name length impact performance in Redis?

如果您使用十六进制表示,GUID 通常有 32-36 个字符的长度。正如 Evan Carrol 在 cmets 中所注意到的,Redis 字符串是二进制安全的,因此您可以使用二进制值并将密钥大小减少到 128 位(16 个字符)。这样长度的键根本不会影响性能。

此外,文档建议对非常大的键使用散列函数:http://redis.io/topics/data-types-intro

【讨论】:

  • UUID 的长度为 128 位,类似于 md5sum。与人物无关。
【解决方案2】:

Redis 使用哈希策略存储所有键,每个键都使用哈希函数存储。所有关于键的 Redis db 性能都属于这个功能 - 或相关的东西。

原始键也被存储以找出不同键之间的未来冲突,是的,大键可能会影响内存句柄和所有相关字段:内存碎片、缓存命中/未命中等...

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2018-12-12
  • 1970-01-01
  • 1970-01-01
  • 2011-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多