Skip to content

Instantly share code, notes, and snippets.

@matehat
Created March 31, 2010 01:54
Show Gist options
  • Save matehat/349831 to your computer and use it in GitHub Desktop.
Save matehat/349831 to your computer and use it in GitHub Desktop.
exports.Backend: class RedisBackend extends Backend
CONTENT: 'content'
DEPS: 'dependencies'
DATE: 'date'
constructor: (config) ->
@host: config.host || '127.0.0.1'
@port: config.port || 6379
@db: config.db || 0
@client: new redis.Client(@port, @host)
@connect()
connect: (callback) ->
defer @client.connect
@client.select @db, callback
key: (res, key) ->
"$res.group::$res.path::$key"
set: (res, callback) ->
deps: ("\"$dep\"" for dep in res.deps)
defer @client.set @key(res, @DATE), String(new Date())
@client.mset @key(res, @CONTENT), res.content,
@key(res, @DEPS), "[${deps.join(',')}]", callback
get: (res) ->
[err, values]: defer @client.mget @key(res, @CONTENT), @key(res, @DEPS)
res.content: values[0]
res.deps: eval(values[1])
yield err
getDate: (res) ->
[err, date]: defer @client.get @key(res, @DEPS)
yield date
close: ->
@client.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment