我刚刚开始使用Redis.我的数据库包含大约10亿条记录.使用HKEYS *
结果导致内存不足错误.
有没有办法迭代键?喜欢的东西HKEYS *
,但有限制N +
编辑:
我现在正在使用一个匹配模式的循环
for c in '1234567890abcedf':
r.keys(c + '*')
Run Code Online (Sandbox Code Playgroud)
小智 7
自 Redis 2.8.0 起可用的是基于游标的 Redis 迭代命令(SCAN、HSCAN 等),可让您高效地迭代数十亿个键。对于您的特定情况,开始使用 HSCAN 而不是 HKEYS/HGETALL。它在服务器资源上高效、廉价并且可扩展性非常好。与HKEYS不同,您甚至可以向HSCAN添加模式。
例如
127.0.0.1:6379> HMSET hash0 key0 value0 key1 value1 entry0 data0 entry1 data1
OK
127.0.0.1:6379> HSCAN hash0 0 MATCH key*
1) "0"
2) 1) "key0"
2) "value0"
3) "key1"
4) "value1"
127.0.0.1:6379> HSCAN hash0 0
1) "0"
2) 1) "key0"
2) "value0"
3) "key1"
4) "value1"
5) "entry0"
6) "data0"
7) "entry1"
8) "data1"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10722 次 |
最近记录: |