SST
SST

Reputation: 2144

How can I get all matched keys from redis using ruby on rails

How Can I get all matched keys from list of keys stored in redis using Ruby on rails. I am using Ruby 2.5.1 version.

I used SCAN to query matched keys, but it returns 2 values always instead of 5. It returns all when I pass count. So How can I pass count in Ruby On Rails code?

Without count return 2 value:

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

With count return all (5) value:

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 code:

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

Kindly provide your thoughts on this.

Upvotes: 1

Views: 2197

Answers (1)

Aleksei Matiushkin
Aleksei Matiushkin

Reputation: 121000

Assuming you use official redis-rb to handle redis connection, their tests contain the answer on your question:

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

Upvotes: 1

Related Questions