2011-08-15 2 views
2

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

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

ответ

5

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

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

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

A «имя хоста: порт/пространство имен» Строка (для установки пространство имена Redis)

Отъезд в раздел "Конфигурация" из риого Resque для получения дополнительной информации: https://github.com/resque/resque/blob/master/README.md

+0

Итак, мне просто нужно предоставить ключи уникальным пространствам имен, а Redis не запутается в других записях, да? – coreyward

+0

Лично я считаю, что это более чистое решение, чем мой собственный ответ, когда у вас есть пространство имен, оно обеспечивает разделение проблем и, как правило, сохраняет код в лучшем состоянии. –

1

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

+0

Вот что мне интересно, как это сделать - я полагаю, что Resque использует списки Redis, но я действительно не знаю, как не прикасаться к ним или как к ним можно получить доступ. Помогите? – coreyward

+0

О! Хорошо, что зависит от приложения. Возьмите пример в Resque readme, очередь устанавливается с помощью '@queue =: file_serve'. В Redis эти данные хранятся с тем же именем, что и список. –

1

Да, полностью согласен с другими ответами, 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 Conte nt, а не только фоновая обработка