Reputation: 2144
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
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