Redis::CommandError: ОШИБОЧНОЕ количество аргументов для команды «hset» в ruby 2.7 и rails 6.1.3

#ruby-on-rails #ruby #redis

Вопрос:

Сервер Redis v=5.0.3

 target_servers.each do |server|
   ls = Redis.new(host: server, port: 1111, db: 1)
   if ls
      ls.pipelined do
        host.keys.sort.each do |hostname|
          ls.hset(mk, *host[hostname].flatten)
        end #loop
      end # pipelined
    end #if
end
 

Когда мы запускаем этот код, он выдает следующую ошибку —

Для Redis::CommandError: ошибка неверное число аргументов для ‘hset’ команду /var/home/user/.rvm/gems/ruby-2.7.3@proj/gems/redis-4.3.1/lib/redis/client.rb:231:in call_pipelined' /var/home/user/.rvm/gems/ruby-2.7.3@peoj/gems/redis-4.3.1/lib/redis/client.rb:185:in заблокировать в call_pipeline’ /var/home/user/.rvm/gems/ruby-2.7.3@proj/gems/redis-4.3.1/lib/redis/client.rb:328:in with_reconnect' /var/home/user/.rvm/gems/ruby-2.7.3@proj/gems/redis-4.3.1/lib/redis/client.rb:183:in call_pipeline’ /var/home/user/.rvm/gems/ruby-2.7.3@proj/gems/redis-4.3.1/lib/redis.rb:2453:in block in pipelined' /var/home/user/.rvm/gems/ruby-2.7.3@proj/gems/redis-4.3.1/lib/redis.rb:70:in блок синхронизации’ /var/home/user/.rvm/gems/ruby-2.7.3@proj/gems/redis-4.3.1/lib/redis.rb:70:in synchronize' /var/home/user/.rvm/gems/ruby-2.7.3@proj/gems/redis-4.3.1/lib/redis.rb:2449:in конвейерные’ /ВАР/главная/пользователя/работы/проекта по/lib/задачи/logstash.грабли:88:в block (3 levels) in <top (required)>' /var/home/user/work/proj/lib/tasks/logstash.rake:80:in каждом’ из /VAR/главная/пользователя/работы/проекта по/lib/задачи/logstash.рейк:80:в block (2 levels) in <top (required)>' /var/home/user/.rvm/gems/ruby-2.7.3@proj/gems/airbrake-11.0.3/lib/airbrake/rake.rb:17:in исполнении’ /var/home/user/.rvm/gems/ruby-2.7.3@proj/gems/rake-13.0.3/exe/rake:27:in <top (required)>' /home/user/.rvm/gems/ruby-2.7.3@proj/bin/ruby_executable_hooks:22:in оценка’ /home/user/.rvm/gems/ruby-2.7.3@proj/bin/ruby_executable_hooks:22:in `

Комментарии:

1. вам нужно убедиться, что host[hostname].flatten он содержит четное количество элементов (в виде пар ключ-значение, которые hset будут храниться).

2. Привет, Лам, Да, я проверил, что он содержит четное количество элементов, но все равно выдает ту же ошибку. Пожалуйста, проверьте вопрос, который я задал, опишите подробнее об ошибке.