Bal*_*u K 6 azure redis azure-redis-cache
Redis 中为特定键存储的值的建议大小是否有上限?
100KB 是不是太大了?
Jon*_*ole 19
在确定某物是否“太大”时,您需要考虑两件事。
Redis 是否支持您要存储的键/值对象的大小?
这个问题的答案在 Redis 站点 ( https://redis.io/topics/data-types )上有很好的记录,所以我不会在这里详细介绍。
对于给定的键/值大小,我需要注意哪些后果?
这是一个更微妙的答案,因为它在很大程度上取决于您如何使用 Redis 以及您的应用程序可以接受哪些行为,哪些行为不能。
例如,较大的键/值大小可能导致服务器内存空间碎片化。如果您无论如何都没有使用 Redis 服务器中的所有内存,那么这对您来说可能没什么大不了的。但是,如果您需要从 Redis 服务器中挤出所有内存,那么您现在正在降低内存分配方式的效率,并且您将无法访问一些本来可以拥有的内存。
再举一个例子,当你从 Redis 读取这些大的键/值条目时,这意味着你必须通过网络从服务器到客户端传输更多的数据。这样做的一些后果是:
传输数据需要更多时间,因此您的客户端可能需要配置更高的超时值以允许额外的传输时间。
用于传输此数据的网络缓冲区可能会影响客户端或服务器上的可用内存,这可能会加剧已经围绕碎片描述的可用内存问题。
如果频繁访问这些大的键/值项,则会放大上述影响,因为您一遍又一遍地重复传输这些数据。
因此,答案不是明确的“是”或“否”,而是您应该考虑并可能针对预期工作量进行测试的一些事情。总的来说,我确实建议我们的客户尽量保持小,我经常说尽量保持在 100kb 以下,但我也看到很多客户使用更大的 Redis(在 MB 范围内)。有时这些较大的值没什么大不了的。在其他情况下,直到数月或数年之后,当他们的应用程序的负载或行为发生变化时,它才可能成为问题。