如何使用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 + '*')
请对此发表您的看法。
答案 0 :(得分: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