BattleSim/server/redis.coffee

28 lines
744 B
CoffeeScript

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