nodulator
Version:
Complete NodeJS Framework for Restfull APIs
360 lines (233 loc) • 12.7 kB
HTML
<html>
<head>
<title>Cache.ls</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1.0; maximum-scale=1.0; user-scalable=0;">
<link rel="stylesheet" media="all" href="docco.css" />
</head>
<body>
<div id="container">
<div id="background"></div>
<ul id="jump_to">
<li>
<a class="large" href="javascript:void(0);">Jump To …</a>
<a class="small" href="javascript:void(0);">+</a>
<div id="jump_wrapper">
<div id="jump_page_wrapper">
<div id="jump_page">
<a class="source" href="Nodulator.html">
Nodulator.ls
</a>
<a class="source" href="ClientDB.html">
ClientDB.ls
</a>
<a class="source" href="index.html">
index.ls
</a>
<a class="source" href="Resource.html">
Resource.ls
</a>
<a class="source" href="Bus.html">
Bus.ls
</a>
<a class="source" href="Cache.html">
Cache.ls
</a>
<a class="source" href="ChangeWatcher.html">
ChangeWatcher.ls
</a>
<a class="source" href="Debug.html">
Debug.ls
</a>
<a class="source" href="Wrappers.html">
Wrappers.ls
</a>
<a class="source" href="Nodulator.html">
Nodulator.ls
</a>
<a class="source" href="Resource.html">
Resource.ls
</a>
<a class="source" href="Schema.html">
Schema.ls
</a>
<a class="source" href="NModule.html">
NModule.ls
</a>
<a class="source" href="AccountResource.html">
AccountResource.ls
</a>
<a class="source" href="User.html">
User.ls
</a>
<a class="source" href="index.html">
index.ls
</a>
<a class="source" href="Nodulator-Angular.html">
Nodulator-Angular.ls
</a>
<a class="source" href="TaskDirective.html">
TaskDirective.ls
</a>
<a class="source" href="index.html">
index.ls
</a>
<a class="source" href="TaskService.html">
TaskService.ls
</a>
<a class="source" href="main.html">
main.ls
</a>
<a class="source" href="index.html">
index.ls
</a>
<a class="source" href="index.html">
index.ls
</a>
<a class="source" href="Task.html">
Task.ls
</a>
<a class="source" href="index.html">
index.ls
</a>
<a class="source" href="index.html">
index.ls
</a>
<a class="source" href="index.html">
index.ls
</a>
<a class="source" href="index.html">
index.ls
</a>
<a class="source" href="index.html">
index.ls
</a>
<a class="source" href="DOM.html">
DOM.ls
</a>
<a class="source" href="View.html">
View.ls
</a>
<a class="source" href="index.html">
index.ls
</a>
<a class="source" href="Nodulator.html">
Nodulator.ls
</a>
<a class="source" href="Mongo.html">
Mongo.ls
</a>
<a class="source" href="Mysql.html">
Mysql.ls
</a>
<a class="source" href="SqlMem.html">
SqlMem.ls
</a>
<a class="source" href="index.html">
index.ls
</a>
<a class="source" href="Resource.html">
Resource.ls
</a>
<a class="source" href="Request.html">
Request.ls
</a>
<a class="source" href="Route.html">
Route.ls
</a>
<a class="source" href="index.html">
index.ls
</a>
</div>
</div>
</li>
</ul>
<ul class="sections">
<li id="title">
<div class="annotation">
<h1>Cache.ls</h1>
</div>
</li>
<li id="section-1">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-1">¶</a>
</div>
</div>
<div class="content"><div class='highlight'><pre>redis = <span class="hljs-built_in">require</span> \redis
Debug = <span class="hljs-built_in">require</span> <span class="hljs-string">'../Helpers/Debug'</span>
debug-cache = <span class="hljs-keyword">new</span> Debug <span class="hljs-string">'N::Resource::Cache'</span>
<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">RedisCache</span></span>
({host = <span class="hljs-string">'127.0.0.1'</span>, port = <span class="hljs-number">6379</span>, database = <span class="hljs-number">0</span>}) ->
@client = redis.createClient {host, port}
@client.select database
@client.flushdb()
Get: <span class="hljs-function"><span class="hljs-params">(name, done)</span> -></span>
@client.get name, <span class="hljs-function"><span class="hljs-params">(err, reply)</span> -></span>
<span class="hljs-keyword">return</span> done err <span class="hljs-keyword">if</span> err?
done <span class="hljs-literal">null</span>, reply
Set: <span class="hljs-function"><span class="hljs-params">(name, value, done)</span> -></span>
@client.set name, value, (err, reply) ~>
<span class="hljs-keyword">return</span> done err <span class="hljs-keyword">if</span> err?
@client.expire(name, <span class="hljs-number">3600</span>);
done <span class="hljs-literal">null</span>, reply
Delete: <span class="hljs-function"><span class="hljs-params">(name, done)</span> -></span>
@client.del name, (err, reply) ~>
<span class="hljs-keyword">return</span> done err <span class="hljs-keyword">if</span> err?
done <span class="hljs-literal">null</span>, reply
Reset: <span class="hljs-function">-></span>
@client.flushdb()
<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MemCache</span></span>
->
@client = {}
Get: <span class="hljs-function"><span class="hljs-params">(name, done)</span> -></span>
<span class="hljs-keyword">if</span> @client[name]?
<span class="hljs-keyword">return</span> done <span class="hljs-literal">null</span>, reply
done!
Set: <span class="hljs-function"><span class="hljs-params">(name, value, done)</span> -></span>
@client[name] = value
done!
Delete: <span class="hljs-function"><span class="hljs-params">(name, done)</span> -></span>
<span class="hljs-keyword">delete</span> @client[name]
done!
Reset: <span class="hljs-function">-></span>
@client = {}
<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Cache</span></span>
(config) ->
<span class="hljs-keyword">if</span> config?.cache?.type <span class="hljs-keyword">is</span> \Redis <span class="hljs-keyword">or</span> config?.cache <span class="hljs-keyword">is</span> \Redis
debug-cache.Warn <span class="hljs-string">'Redis cache init'</span>
@client = <span class="hljs-keyword">new</span> RedisCache config.cache <span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> <span class="hljs-keyword">is</span>-type \String config.cache
@client = <span class="hljs-keyword">new</span> RedisCache {} <span class="hljs-keyword">if</span> <span class="hljs-keyword">is</span>-type \String config.cache
<span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> config?.cache?.type <span class="hljs-keyword">is</span> \Mem <span class="hljs-keyword">or</span> config?.cache <span class="hljs-keyword">is</span> \Mem
debug-cache.Warn <span class="hljs-string">'Mem cache init'</span>
@client = <span class="hljs-keyword">new</span> MemCache
<span class="hljs-keyword">else</span>
debug-cache.Warn <span class="hljs-string">'No cache activated'</span>
Get: <span class="hljs-function"><span class="hljs-params">(name, done)</span> -></span>
<span class="hljs-keyword">return</span> done! <span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> @client?
@client.Get name, <span class="hljs-function"><span class="hljs-params">(err, reply)</span> -></span>
<span class="hljs-keyword">return</span> done! done err <span class="hljs-keyword">if</span> err?
debug-cache.Warn <span class="hljs-string">'Cache answered for '</span> + name
done <span class="hljs-literal">null</span>, reply
Set: <span class="hljs-function"><span class="hljs-params">(name, value, done)</span> -></span>
<span class="hljs-keyword">return</span> done! <span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> @client?
@client.Set name, value, (err, reply) ~>
<span class="hljs-keyword">return</span> done! done err <span class="hljs-keyword">if</span> err?
debug-cache.Warn <span class="hljs-string">'Cache updated for '</span> + name
done <span class="hljs-literal">null</span>, reply
Delete: <span class="hljs-function"><span class="hljs-params">(name, done)</span> -></span>
<span class="hljs-keyword">return</span> done! <span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> @client?
@client.Delete name, (err, reply) ~>
<span class="hljs-keyword">return</span> done! done err <span class="hljs-keyword">if</span> err?
debug-cache.Warn <span class="hljs-string">'Cache deleted for '</span> + name
done <span class="hljs-literal">null</span>, reply
Reset: <span class="hljs-function">-></span>
<span class="hljs-keyword">return</span> <span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> @client?
@client.Reset!
<span class="hljs-built_in">module</span>.exports = <span class="hljs-function">-></span> <span class="hljs-keyword">new</span> Cache it</pre></div></div>
</li>
</ul>
</div>
</body>
</html>