Можно ли использовать Redis вместе с Resque?

Я использую Redis To Go на Heroku, и я хотел бы использовать его для хранения некоторых данных вместе с заданиями Resque, так же как я могу хранить DelayedJobs в той же базе данных Postgres, что и остальные данные моей модели.

Это возможно? Хотите кратко объяснить, как Resque хранит задания в Redis? Я новичок в Redis, и хотя я понимаю на более высоком уровне, как это работает, я не знаком с деталями реализации.


person coreyward    schedule 15.08.2011    source источник


Ответы (3)


Да, ты можешь. Согласно документации Resque:

У Resque есть установщик Redis, которому можно задать строку или объект Redis. Это означает, что если вы уже используете Redis в своем приложении, Resque может повторно использовать существующее соединение.

Кроме того, в документации для Resque.redis= указано, что пространство имен принимается, чтобы предотвратить конфликты с другими вашими приложениями, работающими в том же экземпляре:

Строка hostname:port/namespace (для установки пространства имен Redis)

Дополнительную информацию см. в разделе «Конфигурация» файла Resque readme: https://github.com/resque/resque/blob/master/README.markdown

person kylc    schedule 15.08.2011
comment
Итак, мне просто нужно дать ключам уникальные пространства имен, и Redis не будет путаться с другими записями, да? - person coreyward; 15.08.2011
comment
Лично я считаю, что это более чистое решение, чем мой собственный ответ, когда у вас есть пространство имен, оно обеспечивает разделение задач и, как правило, поддерживает код в лучшем состоянии. - person Devin M; 15.08.2011

Redis — это расширенное хранилище значений ключа, которое используется Resque для хранения данных о заданиях. Точные детали зависят от вашего приложения, однако они должны хорошо работать вместе. Пока ваш код не использует списки, которые использует Resque, вы будете золотым.

person Devin M    schedule 15.08.2011
comment
Вот что мне интересно, как это сделать — я предполагаю, что Resque использует списки Redis, но я действительно не знаю, как не трогать их или как получить доступ к чему-либо из этого. Помощь? - person coreyward; 15.08.2011
comment
Ой! Что ж, это зависит от приложения. Возьмем пример в ридми Resque, очередь устанавливается с помощью @queue = :file_serve. В Redis эти данные хранятся под тем же именем, что и список. - person Devin M; 15.08.2011

да, полностью согласен с другими ответами, Redis можно использовать для других целей, а не только для фоновой обработки. Кстати, Rescue предоставляет простой интерфейс для настройки/настройки/использования/просмотра Redis.

Настройка/Запуск

$ git clone --depth=1 git://github.com/defunkt/resque.git
$ cd resque
$ rake redis:install dtach:install

$ vim config/resque.yml
  "development: localhost:6379"

$ vim config/initializers/rescue.rb
  "rails_root = ENV['RAILS_ROOT'] || File.dirname(__FILE__) + '/../..'
   rails_env = ENV['RAILS_ENV'] || 'development'

   resque_config = YAML.load_file(rails_root + '/config/resque.yml')
   Resque.redis = resque_config[rails_env]"

$ rake redis:start

Использовать

# model
 def user_activity
   a = Resque.redis.lrange "log_" + self.id.to_s, 0, -1
   a.map{|i| JSON.parse(i)}
 end

Обзор

 $ resque-web

Он позволяет просматривать содержимое Redis, а не только фоновую обработку.

person Anatoly    schedule 01.10.2011