Replaced memcached with redis.
This commit is contained in:
1 parent
5a2648c4d0
commit
2e4a524d90
6 files changed
+48
-49
No files matched your search
@@ -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
|
||||
Reference in new issue
Block a user