A stack Cedar do Heroku é incrível por várias razões. Uma delas é que ela é de primeira classe Node.js de hospedagem.
Eu estou fazendo um teste com um aplicativo que usa Redis para fazer cache de dados e não encontrei qualquer documentação sobre como conectar um aplicativo Node para o add-on Redis ToGo. Veja como foi que eu fiz:
Isso pressupõe que você já tenha criado o app Heroku ou não precisa de qualquer ajuda para fazer isso. O Heroku possui um ótimo tutorial sobre como fazer o deploy de um aplicativo Node em Cedar.
Primeiro, adicione os add-ons Redis ToGo através do comando heroku:
heroku addons:add redistogo
Instalar o add-on adicionará automaticamente um ambiente variável REDISTOGO_URL para seu aplicativo. Você pode ver o valor dele com o comando heroku config.
O cliente Redis para o Node4 que eu uso é o node_redis, então o que ver a seguir é específico para ele. Se você usar outro cliente, ajuste conforme necessário.
Quando o node_redis se conecta a uma instância Redis em sua máquina local, ele assume a porta padrão e informações host; então instanciar o cliente fica facinho assim:
var redis = require("redis").createClient();
Isso funciona muito bem em desenvolvimento, mas precisamos dele para autenticar Redis ToGo na produção. Para lidar com os dois casos, eu só verifico a existência do REDISTOGO_URL, assim:
if (process.env.REDISTOGO_URL) { // TODO: redistogo connection } else { var redis = require("redis").createClient(); }
Tudo deve funcionar perfeitamente no desenvolvimento, mas ainda precisamos implementar a conexão Redis To Go. Para fazer isso, precisamos extrair a porta, o hostname e a string de autenticação do REDISTOGO_URL usando lib url built-in do Node:
// inside if statement var rtg = require("url").parse(process.env.REDISTOGO_URL); var redis = require("redis").createClient(rtg.port, rtg.hostname); redis.auth(rtg.auth.split(":")[1]);
Por alguma razão, a lib url do Node não vai dividir a sessão auth do nome de usuário e senha, de modo que o que está acontecendo no rtg.auth.split(“:”)[1] seja passado para o comando auth.
Isso foi tudo o que precisei para ter meu aplicativo ligado e funcionando perfeitamente. Espero que isso ajude você a fazer o mesmo!
***
Texto original disponível em http://blog.jerodsanto.net/2011/06/connecting-node-js-to-redis-to-go-on-heroku/