Где я могу настроить Redis только один раз? - PullRequest
0 голосов
/ 12 июля 2010

Я использую рельсы 2.3.8 и redis.

В моих контроллерах каждый раз, когда я хочу получить доступ к redis, я создаю новый объект Redis, например:

class AbcController < ApplicationController
  def index
     redis => Redis.new
     redis.xxx
  end

  def list
     redis => Redis.new
     redis.xxx
  end
end

Я чувствую, что это очень плохо, и у меня есть несколько вопросов здесь:

  1. Можем ли мы создать ONE Redis объект где-нибудь, и мы можем использовать его напрямую где угодно? Если да, то как это сделать?

  2. Нужно ли закрывать (отключать) объект redis после операции?

Ответы [ 2 ]

2 голосов
/ 12 июля 2010

Вы можете создать этот объект в выделенных инициализаторах, подобных этому

RedisConnection = Redis.new

После того, как вы можете вызвать это Константе в своем коде.

Этот объект является клиентом Redis. Таким образом, вы можете попробовать, если всегда подключен или нет #connected? метод. И вы можете # восстановить это.

0 голосов
/ 26 августа 2010

Я бы не использовал для этого константу. Другой вариант - определить этот метод, вероятно, в config/initializers/redis.rb:

def redis
  Thread.current[:redis] ||= Redis.connect
end

Использование Redis.connect позволяет настроить URL-адрес подключения с помощью переменной среды REDIS_URL. Базовый формат redis://127.0.0.1:6379, но вы можете сделать больше .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...