Replaced memcached with redis.

This commit is contained in:
Zaid Abdulla committed 2013-11-02 20:55:31 +03:00
1 parent 5a2648c4d0
commit 2e4a524d90
6 files changed
+48 -49

No files matched your search

+14 -20
View File
@@ -1,7 +1,6 @@
config = require './config'
mongodb = require 'mongodb'
Memcached = require 'memcached'
memcached = new Memcached(config.MEMCACHED_SOCKET, {maxExpiration : 86400, retries : 1})
redisClient = require('redis').createClient(config.REDIS_SOCKET)
tasksCollection = null
devicesCollection = null
@@ -40,27 +39,22 @@ mongodb.MongoClient.connect("mongodb://#{config.MONGODB_SOCKET}/#{config.DATABAS
getTask = (taskId, callback) ->
# TODO using getMulti instead of get because of possible bug
# in node-memcached where it sometimes returns incorrect values
# when under heavy load. getMulti works fine.
tid = String(taskId)
memcached.getMulti([tid], (err, data) ->
task = data[tid]
if not task?
tasksCollection.findOne({_id : mongodb.ObjectID(tid)}, (err, task) ->
# TODO use err parameter in callback
throw new Error(err) if err?
callback(task)
)
redisClient.get(tid, (err, res) ->
return callback(err) if err
if res?
callback(err, JSON.parse(res))
else
callback(task)
tasksCollection.findOne({_id : mongodb.ObjectID(tid)}, (err, task) ->
callback(err, task)
)
)
getPresets = (callback) ->
memcached.get(['presets', 'objects'], (err, res) ->
presets = res.presets
objects = res.objects
redisClient.mget('presets', 'objects', (err, res) ->
presets = JSON.parse(res[0])
objects = JSON.parse(res[1])
if presets and objects
callback(presets, objects)
return
@@ -69,7 +63,7 @@ getPresets = (callback) ->
throw err if err
presets = p
memcached.set('presets', presets, config.PRESETS_CACHE_DURATION)
redisClient.setex('presets', config.PRESETS_CACHE_DURATION, JSON.stringify(presets))
callback(presets, objects) if objects
)
@@ -79,12 +73,12 @@ getPresets = (callback) ->
for i in o
objects[i._id] = i
memcached.set('objects', objects, config.PRESETS_CACHE_DURATION)
redisClient.setex('objects', config.PRESETS_CACHE_DURATION, JSON.stringify(objects))
callback(presets, objects) if presets
)
)
exports.memcached = memcached
exports.redisClient = redisClient
exports.getTask = getTask
exports.getPresets = getPresets