# memory-cache

> A simple in-memory cache. put(), get() and del()

Latest version **0.2.0** (published 2017-06-20) · BSD-2-Clause license · 795.0K weekly downloads

## Install

```sh
npm install memory-cache
pnpm add memory-cache
yarn add memory-cache
bun add memory-cache
```

## Health

**Score 38/100 (D)** — status: abandoned.

Positive: moderate downloads; has types package; no vulnerabilities; high quality score.

Warnings: no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.2.0 |
| Published | 2017-06-20 |
| First published | 2012-03-31 |
| Weekly downloads | 795.0K |
| License | BSD-2-Clause |
| TypeScript types | separate (@types/memory-cache) |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 1594 |
| Author | Paul Tarjan |
| Maintainers | ptarjan |
| Keywords | cache, ram, simple, storage |

## Links

- npm: https://www.npmjs.com/package/memory-cache
- Repository: https://github.com/ptarjan/node-cache
- Homepage: https://github.com/ptarjan/node-cache#readme
- Issues: https://github.com/ptarjan/node-cache/issues
- npm.io page: https://npm.io/package/memory-cache

## Recent versions

- 0.2.0 (latest) — 2017-06-20
- 0.1.6 — 2016-06-08
- 0.1.5 — 2016-04-04
- 0.1.4 — 2015-06-09
- 0.1.3 — 2015-06-09
- 0.1.2 — 2015-04-06
- 0.1.1 — 2015-03-03
- 0.1.0 — 2015-02-25
- 0.0.5 — 2013-02-05
- 0.0.4 — 2012-09-18
- 0.0.3 — 2012-08-07
- 0.0.2 — 2012-05-17
- 0.0.1 — 2012-03-31

## README

# memory-cache [![Build Status](https://travis-ci.org/ptarjan/node-cache.svg?branch=master)](https://travis-ci.org/ptarjan/node-cache)

A simple in-memory cache for node.js

## Installation

    npm install memory-cache --save

## Usage

```javascript
var cache = require('memory-cache');

// now just use the cache

cache.put('foo', 'bar');
console.log(cache.get('foo'));

// that wasn't too interesting, here's the good part

cache.put('houdini', 'disappear', 100, function(key, value) {
    console.log(key + ' did ' + value);
}); // Time in ms

console.log('Houdini will now ' + cache.get('houdini'));

setTimeout(function() {
    console.log('Houdini is ' + cache.get('houdini'));
}, 200);


// create new cache instance
var newCache = new cache.Cache();

newCache.put('foo', 'newbaz');

setTimeout(function() {
  console.log('foo in old cache is ' + cache.get('foo'));
  console.log('foo in new cache is ' + newCache.get('foo'));
}, 200);
```

which should print

    bar
    Houdini will now disappear
    houdini did disappear
    Houdini is null
    foo in old cache is baz
    foo in new cache is newbaz

## API

### put = function(key, value, time, timeoutCallback)

* Simply stores a value
* If time isn't passed in, it is stored forever
* Will actually remove the value in the specified time in ms (via `setTimeout`)
* timeoutCallback is optional function fired after entry has expired with key and value passed (`function(key, value) {}`)
* Returns the cached value

### get = function(key)

* Retrieves a value for a given key
* If value isn't cached, returns `null`

### del = function(key)

* Deletes a key, returns a boolean specifying whether or not the key was deleted

### clear = function()

* Deletes all keys

### size = function()

* Returns the current number of entries in the cache

### memsize = function()

* Returns the number of entries taking up space in the cache
* Will usually `== size()` unless a `setTimeout` removal went wrong

### debug = function(bool)

* Turns on or off debugging

### hits = function()

* Returns the number of cache hits (only monitored in debug mode)

### misses = function()

* Returns the number of cache misses (only monitored in debug mode)

### keys = function()

* Returns all the cache keys

### exportJson = function()

* Returns a JSON string representing all the cache data
* Any timeoutCallbacks will be ignored

### importJson = function(json: string, options: { skipDuplicates: boolean })

* Merges all the data from a previous call to `export` into the cache
* Any existing entries before an `import` will remain in the cache
* Any duplicate keys will be overwritten, unless `skipDuplicates` is `true`
* Any entries that would have expired since being exported will expire upon being imported (but their callbacks will not be invoked)
* Available `options`:
  * `skipDuplicates`: If `true`, any duplicate keys will be ignored when importing them. Defaults to `false`.
* Returns the new size of the cache

### Cache = function()

* Cache constructor
* note that `require('cache')` would return the default instance of Cache
* while `require('cache').Cache` is the actual class

## Note on Patches/Pull Requests

* Fork the project.
* Make your feature addition or bug fix.
* Send me a pull request.

---
_Source: https://npm.io/package/memory-cache · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
