uber-cache

Async caching module that can support any caching engine: Memory, Memcached, Redis, MongoDB, LevelDB

npm install uber-cache
83 downloads in the last week
180 downloads in the last month

uber-cache - Async caching module that supports any caching backend.

build status

Uber Cache ensures you have a consistent cache interface regardless of the caching engine. All caching engines support TTL and LRU and have a async/callback style interface. This means you can easily implement your own engines without changing the interface in your application.

Installation

npm install uber-cache

Usage

Most of the useful caching engines have a async interface due to the evented IO required so it is necessary to use a callback style when manipulating the cache.


var ttlInSeconds = 1
  , someData = { some: 'data' }
  ;

cache.set('some-key', someData, ttlInSeconds, function(error, cachedItem) {
  if (error) {
    // Handle the error
    return false
  }

  console.log('Cache written key:' + cachedItem.key + ' value:' + cachedItem.value)
})

// Later that day, but before the TTL.
cache.get('some-key', function(error, cachedItem) {
  if (error) {
   // Handle the error
    return false
  }

  console.log('Cache from key:' + cachedItem.key + ' value:' + cachedItem.value)
})

API

Functions

  • set(key, value, ttl, callback)

    ttl milliseconds until expiry. Optional

  • get(key, callback)

  • del(key, callback)
  • clear(callback)
  • size(callback)
  • memoize(id, fn, ttl)

    Returns a function that will cache the results of a slow function for ttl or until lru clears it out.

Events

  • miss(key)

    Emitted when a get(key) fails to find a valid cached item with that key.

  • hit(key, value, ttl)

    Emitted when a get(key) finds a valid item in the cache.

  • stale(key, value, ttl)

    Emitted when a get(key) can’t find a valid item but a stale item still exists.

Engines

The uber-cache engines are decoupled from the main project. Unlike other modules that force you to install dependencies for things you not going to use, Uber Cache engines are self contained modules that you also include into your project and pass to Uber Cache on instantiation.

Currently the following engines are available:

Credits

Paul Serby follow me on twitter

Licence

Licenced under the New BSD License

npm loves you