我正在尝试迭代redis中的列表,它具有巨大的长度和lrange导致JS崩溃。
致命错误:CALL_AND_RETRY_2分配失败 - 处理内存不足 致命错误:JS分配失败 - 处理内存不足
我搜索了扫描,但它只给出了键中的匹配结果,不能用它来迭代一个列表类型的键。
transitionTo
现在,我想使用scan迭代my:key,但无法找到任何语法。
答案 0 :(得分:1)
不,您不能使用ReadonlyRootfs=false
命令迭代列表。 SCAN
用于迭代密钥空间。
相反,您应该使用SCAN
来迭代列表。
LRANGE
但是,由于// Get the first 10 items in the list.
LRANGE list 0 9
// Get the next 10 items
LRANGE list 10 19
// ... until all items have been iterated.
的时间复杂度为LRANGE
,因此这是 NOT 便宜的操作,尤其是当列表很大时。当您使用O(S+N)
获取第100个项目时,Redis必须迭代第一个LRANGE
项目。
所以我认为你应该重新设计你的系统,将列表分成几个小列表,或者使用其他数据结构。