From: https://www.npmjs.com/package/node-cache
Simple and fast NodeJS internal caching.
A simple caching module that has set, get and delete methods and works a little bit like memcached. Keys can have a timeout (ttl) after which they expire and are deleted from the cache. All keys are stored in a single object so the practical limit is at around 1m keys.
Since 4.1.0: Key-validation: The keys can be given as either string or number, but are casted to a string internally anyway. All other types will either throw an error or call the callback with an error.
Install
Or just require the node_cache.js file to get the superclass
Examples:
Initialize (INIT):
Options
stdTTL: (default:0) the standard ttl as number in seconds for every generated cache element.0= unlimitedcheckperiod: (default:600) The period in seconds, as a number, used for the automatic delete check interval.0= no periodic check.errorOnMissing: (default:false) en/disable throwing or passing an error to the callback if attempting to.geta missing or expired value.useClones: (default:true) en/disable cloning of variables. Iftrueyou'll get a copy of the cached variable. Iffalseyou'll save and get just the reference. Note:trueis recommended, because it'll behave like a server-based caching. You should setfalseif you want to save mutable objects or other complex types with mutability involved and wanted. Here's a simple code exmaple showing the different behaviordeleteOnExpire: (default:true) whether variables will be deleted automatically when they expire. Iftruethe variable will be deleted. Iffalsethe variable will remain. You are encouraged to handle the variable upon the eventexpiredby yourself.
Store a key (SET):
myCache.set( key, val, [ ttl ], [callback] )
Sets a key value pair. It is possible to define a ttl (in seconds). Returns true on success.
Note: If the key expires based on it's
ttlit will be deleted entirely from the internal data object.
Since 1.0.0: Callback is now optional. You can also use synchronous syntax.
Retrieve a key (GET):
myCache.get( key, [callback] )
Gets a saved value from the cache. Returns a undefined if not found or expired. If the value was found it returns an object with the key value pair.
Since 1.0.0: Callback is now optional. You can also use synchronous syntax.
Since 2.0.0:
The return format changed to a simple value and a ENOTFOUND error if not found ( as callback( err ) or on sync call as result instance of Error ).
Since 2.1.0:
The return format changed to a simple value, but a due to discussion in #11 a miss shouldn't return an error. So after 2.1.0 a miss returns undefined.
Since 3.1.0 errorOnMissing option added
Get multiple keys (MGET):
myCache.mget( [ key1, key2, ... ,keyn ], [callback] )
Gets multiple saved values from the cache. Returns an empty object {} if not found or expired. If the value was found it returns an object with the key value pair.
Since 1.0.0: Callback is now optional. You can also use synchronous syntax.
Since 2.0.0:
The method for mget changed from .get( [ "a", "b" ] ) to .mget( [ "a", "b" ] )
Delete a key (DEL):
myCache.del( key, [callback] )
Delete a key. Returns the number of deleted entries. A delete will never fail.
Since 1.0.0: Callback is now optional. You can also use synchronous syntax.
Delete multiple keys (MDEL):
myCache.del( [ key1, key2, ... ,keyn ], [callback] )
Delete multiple keys. Returns the number of deleted entries. A delete will never fail.
Since 1.0.0: Callback is now optional. You can also use synchronous syntax.
Change TTL (TTL):
myCache.ttl( key, ttl, [callback] )
Redefine the ttl of a key. Returns true if the key has been found and changed. Otherwise returns false. If the ttl-argument isn't passed the default-TTL will be used.
The key will be deleted when passing in a ttl < 0.
Get TTL (getTTL):
myCache.getTtl( key, [callback] )
Receive the ttl of a key. You will get:
undefinedif the key does not exist0if this key has no ttl- a timestamp in ms until the key expires
List keys (KEYS)
myCache.keys( [callback] )
Returns an array of all existing keys.
Statistics (STATS):
myCache.getStats()
Returns the statistics.
Flush all data (FLUSH):
myCache.flushAll()
Flush all data.
Close the cache:
myCache.close()
This will clear the interval timeout which is set on check period option.
Events
set
Fired when a key has been added or changed. You will get the key and the value as callback argument.
del
Fired when a key has been removed manually or due to expiry. You will get the key and the deleted value as callback arguments.
expired
Fired when a key expires. You will get the key and value as callback argument.
flush
Fired when the cache has been flushed.