redis-rb gem中是否有一个函数可以返回存储在数据库中的所有键的列表?我的最终目标是遍历所有的键/值对,并对它们执行一些操作。
当然,redis-rb将所有Redis命令暴露出来,并将它们表示为客户端对象上的方法。
redis.keys('*')
如果你的数据库中有大量记录,内核会杀掉你的redis.keys
操作,因为它将占用太多的内存。
你需要的是批量提取键值。 redis-rb有一个很好的方法可以做到这一点(redis本身不具备此功能):
redis.scan_each(match: 'user:*') do |resume_key_name|
resume_key_name #=> "user:12"
end
如果您想要所有的键,只需不使用 match
选项。
.keys
,因为会导致阻塞问题和性能下降。 - ivesredis.keys
会以数组形式返回结果。
更多信息请参见:http://www.rubydoc.info/github/ezmobius/redis-rb/Redis
.keys
会导致阻塞和性能问题,建议使用.scan
或.scan_each
替代。https://dev59.com/yX3aa4cB1Zd3GeqPZCbb - ives