npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

cache-list

v0.1.9

Published

Cache list

Downloads

95

Readme

Cache List

Install

$ npm install cache-list

How to use

import { MemoryCache } from 'cache-list';

const cache = new MemoryCache({
    defaultDuration: 600, // 10 min
});

const data = [
    {
        name: 'Tom',
        age: 35
    },
    {
        name: 'Emma',
        age: 29
    }
];

cache.set('users', data, 3600); // 60 min

if (cache.exists('users')) {
    return cache.get('users');
}

List:

Properties

  • defaultDuration [integer] - Default duration in seconds before a cache entry will expire.
  • keyPrefix [string] - A string prefixed to every cache key so that it is unique globally in the whole cache storage.
  • serialization [boolean] - Store serialized or unserialized cached data.

Methods

  • buildKey - Builds a normalized cache key from a given key.
  • exists - Checks whether a specified key exists in the cache.
  • get - Retrieves a value from cache with a specified key.
  • multiGet - Retrieves multiple values from cache with the specified keys.
  • set - Stores a value identified by a key into cache.
  • multiSet - Stores multiple items in cache. Each item contains a value identified by a key.
  • add - Stores a value identified by a key into cache if the cache does not contain this key.
  • multiAdd - Stores multiple items in cache. Each item contains a value identified by a key.
  • delete - Deletes a value with the specified key from cache.
  • flush - Deletes all values from cache.

Property Details

defaultDuration

Default duration in seconds before a cache entry will expire. Default value is 0, meaning infinity. This value is used by set() if the duration is not explicitly given.

keyPrefix

A string prefixed to every cache key so that it is unique globally in the whole cache storage. It is recommended that you set a unique cache key prefix for each application if the same cache storage is being used by different applications.

To ensure interoperability, only alphanumeric characters should be used.

serialization

If this property is set false, data will be directly sent to and retrieved from the cache component without any serialization or deserialization.

Method Details

buildKey

Builds a normalized cache key from a given key.

If the given key is a string containing alphanumeric characters only and no more than 32 characters, then the key will be returned back prefixed with keyPrefix. Otherwise, a normalized key is generated by serializing the given key, applying MD5 hashing, and prefixing with keyPrefix.

| buildKey(key)||| | ------------- |---| ---| | key | mixed | The key to be normalized | | return | string | The generated cache key |

exists

Checks whether a specified key exists in the cache.

This can be faster than getting the value from the cache if the data is big.

| exists(key)||| | ------------- |---| ---| | key | mixed | A key identifying the cached value. This can be a simple string or a complex data structure consisting of factors representing the key. | | return | boolean | True if a value exists in cache, false if the value is not in the cache or expired. |

get

Retrieves a value from cache with a specified key.

| get(key)||| | ------------- |---| ---| | key | mixed | A key identifying the cached value. This can be a simple string or a complex data structure consisting of factors representing the key. | | return | mixed | The value stored in cache, false if the value is not in the cache, expired, or the dependency associated with the cached data has changed. |

multiGet

Retrieves multiple values from cache with the specified keys.

Some caches allow retrieving multiple cached values at the same time, which may improve the performance. In case a cache does not support this feature natively, this method will try to simulate it.

| multiGet(key)||| | ------------- |---| ---| | key | string[] | List of string keys identifying the cached values | | return | mixed | List of cached values corresponding to the specified keys. The array is returned in terms of (key, value) pairs. If a value is not cached or expired, the corresponding array value will be false. |

set

Stores a value identified by a key into cache.

If the cache already contains such a key, the existing value and expiration time will be replaced with the new ones, respectively.

| set(key, value, duration)||| | ------------- |---| ---| | key | mixed | A key identifying the value to be cached. This can be a simple string or a complex data structure consisting of factors representing the key. | | value | mixed | The value to be cached | | duration | integer | The number of seconds in which the cached value will expire. 0 means never expire. If not set, default defaultDuration value is used. | | return | string | Whether the value is successfully stored into cache |

multiSet

Stores multiple items in cache. Each item contains a value identified by a key.

If the cache already contains such a key, the existing value and expiration time will be replaced with the new ones, respectively.

| multiSet(items, duration)||| | ------------- |---| ---| | items | mixed | The items to be cached, as key-value pairs. | | duration | integer | Default number of seconds in which the cached values will expire. 0 means never expire. | | return | string | Array of failed keys |

add

Stores a value identified by a key into cache if the cache does not contain this key.

Nothing will be done if the cache already contains the key.

| add(key, value, duration)||| | ------------- |---| ---| | key | mixed | A key identifying the value to be cached. This can be a simple string or a complex data structure consisting of factors representing the key. | | value | mixed | The value to be cached | | duration | integer | The number of seconds in which the cached value will expire. 0 means never expire. If not set, default defaultDuration§ value is used. | | return | string | Whether the value is successfully stored into cache |

multiAdd

Stores multiple items in cache. Each item contains a value identified by a key.

If the cache already contains such a key, the existing value and expiration time will be preserved.

| multiAdd(items, duration)||| | ------------- |---| ---| | items | mixed | The items to be cached, as key-value pairs. | | duration | integer | Default number of seconds in which the cached values will expire. 0 means never expire. | | return | string | Array of failed keys |

delete

Deletes a value with the specified key from cache.

| delete(key)||| | ------------- |---| ---| | key | mixed | A key identifying the value to be deleted from cache. This can be a simple string or a complex data structure consisting of factors representing the key. | | return | boolean | If no error happens during deletion |

flush

Deletes all values from cache.

Be careful of performing this operation if the cache is shared among multiple applications.

| flush()||| | ------------- |---| ---| | return | boolean | Whether the flush operation was successful. |

MemoryCache

Use memory as a storage.

RedisCache

Use Redis as a storage.

Properties

  • isSharedDatabase [boolean] - If you use a separated database to store a cache, set keyPrefix
  • clientOptions [object] - Config for redis connections. You can find a full list of redis client options here.
const cache = new RedisCache();

const cache = new RedisCache({
    clientOptions: {
        db: 2
    }
});

const cache = new RedisCache(
    {
        isSharedDatabase: true,
        keyPrefix: 'active_users',
        clientOptions: {
            db: 1
        }
    }
);

Redis Client Options

| Property | Default | Description | | -------------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | host | 127.0.0.1 | IP address of the Redis server | | port | 6379 | Port of the Redis server | | path | null | The UNIX socket string of the Redis server | | url | null | The URL of the Redis server. Format: [redis[s]:]//[[user][:password@]][host][:port][/db-number][?db=db-number[&password=bar[&option=value]]] (More info avaliable at IANA). | | family | IPv4 | You can force using IPv6 if you set the family to 'IPv6'. See Node.js net or dns modules on how to use the family type. | | db | null | If set, client will run Redis select command on connect. | | password | null | If set, client will run Redis auth command on connect. Alias auth_pass Note Node Redis < 2.5 must use auth_pass | | socket_keepalive | true | If set to true, the keep-alive functionality is enabled on the underlying socket. | | socket_initial_delay | 0 | Initial Delay in milliseconds, and this will also behave the interval keep alive message sending to Redis. | | enable_offline_queue | true | By default, if there is no active connection to the Redis server, commands are added to a queue and are executed once the connection has been established. Setting enable_offline_queue to false will disable this feature and the callback will be executed immediately with an error, or an error will be emitted if no callback is specified.| | retry_unfulfilled_commands | false | If set to true, all commands that were unfulfilled while the connection is lost will be retried after the connection has been reestablished. Use this with caution if you use state altering commands (e.g. incr). This is especially useful if you use blocking commands. | | disable_resubscribing | false | If set to true, a client won't resubscribe after disconnecting. |