Skip to content
This repository has been archived by the owner on Mar 9, 2023. It is now read-only.

Memoize functions results using an lru-cache.

License

Notifications You must be signed in to change notification settings

new10com/lru-memoizer

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

@new10com/lru-memoizer

Deprecation notice

This project (fork) is deprecated.


NPM version NPM downloads Install Size Release

Memoize functions results using an lru-cache.

Installation

npm i @new10com/lru-memoizer

Intro

Forked from https://github.com/jfromaniello/lru-memoizer

This module uses an lru-cache internally to cache the results of an async function.

The load function can have N parameters and the last one must be a callback. The callback should be an errback (first parameter is err).

The hash function purpose is generate a custom hash for storing results. It has all the arguments applied to it minus the callback, and must return an string synchronous.

The freeze option (defaults to false) allows you to deep-freeze the result of the async function.

The clone option (defaults to false) allows you to deep-clone the result every time is returned from the cache.

Usage

var memoizer = require('@new10com/lru-memoizer');

var memoizedGet = memoizer({
  //defines how to load the resource when
  //it is not in the cache.
  load: function (options, callback) {
    request.get(options, callback);
  },

  //defines how to create a cache key from the params.
  hash: function (options) {
    return options.url + qs.stringify(options.qs);
  },

  //all other params for the LRU cache.
  max: 100,
  maxAge: 1000 * 60
});

memoizedGet({
  url: 'https://google.com',
  qs: { foo: 123 }
}, function (err, result, body) {
 //console.log(body);
})

Sync lru-memoizer

Use memoizer.sync to cache things that are slow to calculate or methods returning promises.

var memoizer = require('@new10com/lru-memoizer');
var memoizedGet = memoizer.sync({
  //defines how to load the resource when
  //it is not in the cache.
  load: function (params) {
    //return something_hard_to_compute;s
  },

  //defines how to create a cache key from the params.
  hash: function (params) {
    return params.foo;
  },

  //all other params for the LRU cache.
  max: 100,
  maxAge: 1000 * 60
});

Similar modules

This module is very similar to async-cache, the main difference is the hash function.

License

MIT 2016 - José F. Romaniello

About

Memoize functions results using an lru-cache.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%