Redis:哪个更好:SCAN/HSCAN 或 HVALS。何时使用它们

问题描述 投票:0回答:1

从性能角度来看,什么更好?如何巧妙地使用它们?

我在redis中有哈希实体。一个哈希名称大约有 150K 个键值对(这是一项要求) 我有一个 NodeJS 应用程序来处理响应等。 将使用像“node-redis-scan”eachScan()、“redis”hvals()这样的库

我可以使用:

  1. “redis”hvals()。 REDIS 命令:

    hvals 'my hash name'
    一次调用即可获取 150K 值

  2. “node-redis-scan”eachScan() 带有选项。 REDIS 命令:

    hscan 'my hash name' 0 MATCH * COUNT 15000
    将使用光标直到其值为 0 并过滤结果以仅在代码级别获取值。

哪种选择更好以及什么时候更好?

node.js performance hash redis node-redis
1个回答
0
投票

恕我直言,除非我清楚地知道哈希图的大小很小,否则我不会使用 HVALS。

为什么?与为什么不使用 KEYS 命令的答案相同:如果有很大的响应,它会阻塞主线程。 HSCAN 返回键和值,可能比您需要的更多。但因为它是交互式的,所以它可以扩展答案并且不会长时间阻塞主线程。

我用Java开发了一个小库(在github中搜索InterruptedJedisLocks),并且我使用过多次HSCAN,并且没有使用过HVALS或HKEYS一次。

© www.soinside.com 2019 - 2024. All rights reserved.