gpt4 book ai didi

c++ - Redis mget 显示在 SLOWLOG 中

转载 作者:可可西里 更新时间:2023-11-01 11:12:51 28 4
gpt4 key购买 nike

我正在使用 redis 存储一些针对唯一字符串键的 json 值。由于某些要求,我不得不一次获取多个键值对(恰好 15 K),为此我使用了 C++ 和 cpp_redis 的 MGET redis 命令。

系统运行良好,但在时间上存在一些问题。 MGET 很慢,我在 C++ 中观察到大约 200+ ms 的延迟,它也显示在 SLOWLOG 中。

127.0.0.1:6379> SLOWLOG GET
1) 1) (integer) 893
2) (integer) 1518509153
3) (integer) 167090
4) 1) "MGET"
2) "2be1d3559aa1c93b7b84b144c82c048d"
3) "ac37b25293276382a1eb9fb634bd1ece"
4) "b7257ed986e23dc3bfc630ace592be7c"
5) "e6f92ac1c8c7734d22473d9648863b88"
6) "98b3077022d5a32fbb3df4434ac6a3ed"
7) "00de037007eef73d97e648daa06e5ffb"
8) "60e7fb8be50c543012243cb204cb8694"
9) "6a99e16b15ba6a65801a777cbb19bc3e"
10) "68e1c22474db63f925f2c1fe14f5d2d6"
11) "b12e2cbb1330b1b73d6a0108e5f82062"
12) "cc29fe2f71770848dfc1b8bec955523c"
13) "6e3d9bf3be3b70b38058f0e345a330dd"
14) "a6642a96fae7ccd4fe368dc58bc04bee"
15) "54e04e4d08b69fee6f73adf56d5548ec"
16) "64412a5def4407fe71ba0864898c1c10"
17) "3f2435bfbd23d264b2e2bef22e68b014"
18) "4c70944023f9e6fb6e55fffb9c1f0156"
19) "9dfdb0f0ea8151016f335eaefb5c38a4"
20) "1f9b8a6e35e985e335b5eb223ce170d3"
21) "6e40a2d1e7016a19ea04711f38de793e"
22) "ec8228f23fe0c05caef99dc43c0ec699"
23) "20c1e4239912b7aa6fb4930ee36e49f4"
24) "5d64ed638091eb658d16f5f1cd8575ae"
25) "4176452c864d229b7c4190cea8187717"
26) "b4ece113856f220dc15bfd4b8ed605e8"
27) "e015e9f10e14f31cb5a09525f86d57b1"
28) "360507bac0e7e8bd0d73ed7edf777663"
29) "18b7d6ca197a01c5773d3cbe204fef8d"
30) "0f3d1d8db2c712f11644240a10e885e0"
31) "b9d91378fff3a19544c482233df1268f"
32) "... (14970 more arguments)"

是否有任何最佳实践或特定的事情可以使这个调用更快。

最佳答案

MGET 取决于两个因素:

  1. 您获取的键数。每次获取都是 O(1),所以 N 次获取当然是 O(N)。 1000 个键将比 100 个键慢约 10 倍。没办法了

  2. 每个对象的大小 - 对象越大,序列化响应所需的时间就越多。

15K 个对象对于一个 MGET 是相当多的。在这种情况下,为了不阻塞 redis,我实际上会尝试将其拆分为更小的批处理并执行多个查询,假设每个查询 1000 个。它会减慢一个客户端获取数据的时间,但会使 Redis 不会阻塞 200 毫秒,这真的很糟糕。

关于c++ - Redis mget 显示在 SLOWLOG 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48762318/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com