redis = require 'redis' # Connect to redis if process.env.REDIS_DB_URL parts = require("url").parse(process.env.REDIS_DB_URL) db = redis.createClient(parts.port, parts.hostname) db.auth(parts.auth.split(":")[1]) if parts.auth else db = redis.createClient() db.on 'error', (err) -> console.error(err.stack) if process.env.NODE_ENV == 'test' # Select test database db.select(1) db.shard = (command, key, id, args...) -> if command[0] != 'h' throw new Error('Sharding does not work with non-hashes.') [id, size] = [Number(id), 512] [division, remainder] = [ Math.floor(id / size), (id % size) ] key = [ key, division ].join(':') db[command](key, remainder, args...) # Export database variable module.exports = db