【问题标题】:How can I get all matched keys from redis using ruby on rails如何使用 ruby​​ on rails 从 redis 获取所有匹配的密钥
【发布时间】:2019-06-07 15:27:58
【问题描述】:

如何使用 Ruby on rails 从存储在 redis 中的键列表中获取所有匹配的键。我使用的是 Ruby 2.5.1 版本。

我使用 SCAN 来查询匹配的键,但它总是返回 2 个值而不是 5 个。当我通过计数时它返回所有值。那么如何在 Ruby On Rails 代码中传递计数?

无计数返回2值:

  127.0.0.1:6379> SCAN 100 match *sa*
       1) "sasikala (6965)"
       2) "Zupaen sasi (6961)"

使用计数返回所有 (5) 个值:

127.0.0.1:6379> SCAN 100 match *sa* count 100
           1) "Sasai (6965)"
           2) "Zupaen sasi (6961)"
           3) "Rosan (7000)"
           4) "Alisa (2363)"
           5) "Carissa (4455)"

Ruby on rails 代码:

keys = redis.scan(0, :match => '*' + name + '*')

请提供您对此的想法。

【问题讨论】:

    标签: ruby-on-rails ruby redis


    【解决方案1】:

    假设您使用官方redis-rb 处理redis 连接,他们的tests contain the answer 对您的问题:

    loop.inject([0, []]) do |(cursor, keys), _|
      cursor, new_keys = redis.scan(cursor, match: '{key}*')
      keys << new_keys
      break keys if cursor == '0'
      [cursor, keys]
    end
    

    【讨论】:

    • 获取“Redis::CommandError (ERR invalid cursor):”时不起作用
    • 再一次:这个例子取自他们的官方测试,正如我明确指出的那样。猜猜它是否正常工作,您的代码是否存在故障,反之亦然。
    • 好的。让我试试。
    • 不,它没有返回任何东西
    猜你喜欢
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    • 2016-07-03
    相关资源
    最近更新 更多