检索存储在Redis(Ruby)中的所有密钥的列表

Vik*_*ram 29 ruby redis

redis-rb gem中是否有一个函数返回存储在DB中的所有键的列表?我的最终目标是迭代我的所有键/值对,并对它们执行一些操作.

Ale*_*hey 30

当然,redis-rb公开了所有Redis命令,并将它们表示为客户端对象上的方法.

redis.keys('*')
Run Code Online (Sandbox Code Playgroud)

  • `.keys` 会导致阻塞和性能问题。应该改用`.scan` 或`.scan_each`。/sf/ask/1550056161/ (2认同)

lak*_*are 20

如果你的数据库中有大量的记录,内核会杀死你的,redis.keys因为它会占用太多内存.

你想要的是分批提取密钥.redis-rb有一个很棒的方法(redis本身没有):

    redis.scan_each(match: 'user:*') do |resume_key_name|
        resume_key_name #=> "user:12"
    end
Run Code Online (Sandbox Code Playgroud)

如果您想要所有密钥,请不要使用该match选项.


小智 7

redis.keys 这将以数组形式返回结果.

更多信息:http://www.rubydoc.info/github/ezmobius/redis-rb/Redis