Я сопоставляю несколько строк, используя REDIS.hmget
.В полном магазине около 140 тыс. Ключей.Я видел, как мой бэкэнд совпадал со строками 1k менее чем за 1 с, но я столкнулся с этим конкретным случаем, когда время ожидания совпадения закончилось.Я получаю следующую трассировку:
Errno::ETIMEDOUT: Connection timed out
.bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis/connection/ruby.rb:58:in `write'
.bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis/connection/ruby.rb:58:in `write'
.bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis/client.rb:139:in `process'
.bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis/client.rb:138:in `each'
.bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis/client.rb:138:in `process'
.bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis/client.rb:250:in `ensure_connected'
.bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis/client.rb:137:in `process'
.bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis/client.rb:206:in `logging'
.bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis/client.rb:136:in `process'
.bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis/client.rb:46:in `call'
.bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis.rb:755:in `hmget'
/usr/ruby1.8.7/lib/ruby/1.8/monitor.rb:242:in `synchronize'
.bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis.rb:754:in `hmget'
Несмотря на то, что время ожидания истекло, hmget по-прежнему возвращает то, что ему до сих пор соответствовало, что, кажется, варьируется от 2 до 2,3 тыс. СтрокКак я уже говорил ранее, я видел, как бэкэнд совпадал со строками 1k менее чем за 1 секунду, поэтому мне трудно представить, что строки в 2.3k приводят к превышению времени ожидания Redis, если оно не истекло только через пару секунд.
Есть что-нибудь, что я мог бы мне здесь не хватать?Должен ли я разбить матч на 2 меньших?Есть ли способ изменить интервал ожидания по умолчанию?