Name: ceych
Owner: BBC
Description: Wraps any asynchronous function and provides caching of the result
Created: 2016-02-12 10:33:03.0
Updated: 2017-03-21 20:22:43.0
Pushed: 2017-08-08 09:59:51.0
Homepage: null
Size: 26
Language: JavaScript
GitHub Committers
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
Wraps any asynchronous function and provides caching of the result
install --save ceych
strict';
t request = require('request');
t Catbox = require('catbox').Client;
t Redis = require('catbox-redis');
t ceych = require('ceych').createClient({
cheClient: new Catbox(new Redis({
port: 6379,
host: '127.0.0.1',
partition: 'cache'
),
faultTTL: 30
tion loadData(cb) {
quest.get('https://www.big-data.com/datum.csv', cb);
t loadDataCached = ceych.wrap(loadData);
DataCached((err, res) => {
`res` is returned from the server and stored in the cache
adDataCached((err, res) => {
// `res` is returned from the cache until TTL expiry
;
Ceych automatically creates cache keys based on the wrapped function's body and the arguments passed. This saves you from having to create a unique cache key every time you want the result of a function to be cached.
Return values and arguments need to be serializable to/from JSON. This means that while strings, numbers and basic objects are supported, objects with custom constructors or prototypes are not.
When using a node-statsd client, ceych will increment a counter each time there is a cache hit or miss. The following metrics are sent:
|Metric|Type|Description|
|——|—-|———–|
|ceych.hits|counter
|Incremented whenever there is a cache hit|
|ceych.misses|counter
|Incremented whenever there is a cache miss|
Ceych.createClient(opts)
Creates a ceych client.
cacheClient
- optional - A Catbox client (defaults to an in-memory client).defaultTTL
- optional - The default TTL for caching in seconds (default 30).statsClient
- optional - An instance of the node-statsd clientceych.wrap(fn, ttl, suffix)
Returns a wrapped function that implements caching.
fn
- An asynchronous function to be wrapped. The last argument must be a callback.ttl
- optional - Overrides the default TTL.suffix
- optional - A string appended to cache keys to differentiate between identical functions.ceych.disableCache()
Disables the cache client to allow for wrapped methods to be tested as normal.