Easy to use, high-speed O(1) for all operations, in-memory cache with both ttl and capacity support.

Downloads in past


301.1.04 years ago8 years agoMinified + gzip package size for in-memoriam in KB


Easy to use, high-speed O(1) to O(n) for all operations, in-memory key-value cache with both ttl and capacity support. This caching system has been used in multiple production systems for a while now and has proven stable, quietly improving performance for a host of scenarios, such as:
  • Caching security tokens
  • Caching frequently read/infrequently updated database objects
  • Caching lookup data fetched from remote REST services

This module exports the cache constructor, making usage as simple as:
var Cache = require('in-memoriam');
// Create a 
var capacity = 1000; // Least recently accessed/oldest items are removed when capacity is exceeded
var ttl = 10000; // TTL is in milliseconds. Items not accessed by end of TTL are evicted.
var cache = new Cache(capacity, ttl);
cache.set('names', [ 'joe', 'jim', 'jill', 'jane' ]);
var names = cache.get('names');
The number of cache instances that can be created is limited only by memory. Note that caches will execute a callback every ttl ms to execute eviction logic, so very high capacity caches with a high degree of churn may have CPU impact. Use caches wisely, and tune them using real world data.
Caches maintain metrics to help with tuning and management; a call to cache.stats will return something like:
  "hits":         235,
  "misses":       312,
  "inserts":      255,
  "updates":      42,
  "evictions":    122,
  "expirations":  12,
  "size":         199