2010-07-12 10 views
0

J'utilise les rails 2.3.8 et redis.Où puis-je configurer les redis juste une fois?

Dans mes contrôleurs, chaque fois que je veux accéder Redis, je vais créer un nouvel objet Redis, comme:

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

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

Je sens ce qui est très mauvais, et j'ai quelques questions ici:

  1. Pouvons-nous créer ONE Redis objet quelque part, et nous pouvons l'utiliser directement n'importe où? Si oui, comment le faire?

  2. Avons-nous besoin de fermer (déconnecter) l'objet Redis après l'opération?

Répondre

2

Vous pouvez instancier cet objet dans un initializers dédié comme ça

RedisConnection = Redis.new 

Une fois que vous pouvez appeler cette Constantes dans votre code.

Cet objet est un client à Redis. Donc vous pouvez essayer si toujours connecté ou non par # connecté? méthode. Et vous pouvez le #reconnecter.

0

Je n'utiliserais pas de constante pour cela. Une autre option est de définir cette méthode, probablement config/initializers/redis.rb:

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

L'utilisation Redis.connect vous permet de personnaliser l'URL de connexion en utilisant la variable d'environnement REDIS_URL. Le format de base est redis://127.0.0.1:6379, mais vous pouvez do more.

Vous n'avez pas besoin de vous soucier de la connexion et de la déconnexion. Le client essayera de se connecter la première fois qu'il le faut, et si la connexion est perdue, il essaiera de se reconnecter à nouveau si nécessaire.

+0

Redis.connect est maintenant obsolète. Utilisez Redis.new – rafamvc