从性能的Angular 来看,什么是更好的?如何聪明地使用它们?
我在redis中有散列实体。一个散列名称有大约150 K的键值对(这是一个要求),我有一个NodeJS应用程序来处理响应等。将使用像“node-redis-scan”eachScan(),“redis”hvals()这样的库
我可以用途:
1.“redis”hvals(). REDIS COMMAND:hvals 'my hash name'
并在一次调用中获得150 K值
1.带有选项的“node-redis-scan”eachScan()。REDIS COMMAND:hscan 'my hash name' 0 MATCH * COUNT 15000
将使用游标直到其值为0,并过滤结果以仅在代码级别上获取值。
哪种选择更好,什么时候更好?
1条答案
按热度按时间e3bfsja21#
恕我直言,除非我清楚地知道hashmap的大小非常小,否则我不会使用HVALS。
为什么?为什么?与为什么不使用KEYS命令的答案相同:如果有一个大的响应,它可以阻塞主线程。HSCAN返回的键和值可能比你需要的更多。但是因为它是交互式的,它可以缩放答案,不会长时间阻塞主线程。
我用Java开发了一个小库(在github中搜索InterruptedJedisLocks),我用过很多次HSCAN,没有一次是HVALS,也没有一次是HKEYS。