New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

cache-tags

Package Overview
Dependencies
Maintainers
1
Versions
24
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cache-tags

Adds cache tags for bulk invalidation.

latest
Source
npmnpm
Version
2.9.1
Version published
Weekly downloads
1.4K
-36.01%
Maintainers
1
Weekly downloads
 
Created
Source

Cache Tags Cache Tags logo

Adds cache tags for bulk invalidation.

  • Install
  • Why?
  • Usage
  • Contributors
  • License

· GitHub Actions Documented with emdaer

Install

  • yarn add cache-tags
  • Install Redis normally. If you want to spin up a local cluster for testing you can use: yarn create-cluster and yarn destroy-cluster.

Why?

If you need to invalidate cache entries that are related to each other, or just list these cache entries that relate to each other you can use tags. You will need to add the tags to the cache entries to be able to retrieve them later.

This module only supports Redis as the cache back-end at the moment. It is tested against a single node and a cluster of 3 masters and 3 replicas.

Concept inspired by Drupal 8’s cache tags. API and implementation inspired by Laravel’s Cache Tags.

Usage

If you want to see more usage examples, check the functional tests.

This project uses ioredis as the Redis client. All the options for that project are available here.

const { TaggableCache: Redis } = require('cache-tags');

// Initialize the Redis client as you would using ioredis.
const redis = new Redis('127.0.0.1:6379');
// Now you can use `redis` as you would with ioredis, or you can enter tagged
// mode.
Promise.resolve()
  // Use .tags to enter tagged mode, then call set or get.
  .then(() =>
    Promise.all([
      redis.tags(['first-tag']).set('cache-entry-1', 'Lorem', 1234),
      redis.tags(['first-tag', 'boring']).set('cache-entry-2', 'Ipsum', 2324),
    ])
  )
  .then(() =>
    Promise.all([
      // You can scope gets by enterign tagged mode.
      redis.tags(['first-tag']).get('cache-entry-1'),
      // Or you can get the item as you would do normally.
      redis.get('cache-entry-2'),
    ])
  )
  .then(console.log) // ['Lorem', 'Ipsum'].
  // You can also use tags to list items.
  .then(() => redis.tags(['first-tag']).list())
  .then(console.log) // ['Lorem', 'Ipsum'].
  .then(() => redis.tags(['boring']).list())
  .then(console.log) // ['Ipsum'].
  // You can also use tags to invalidate items.
  .then(() => redis.tags(['first-tag']).list())
  .then(() =>
    Promise.all([
      redis.tags(['first-tag']).get('cache-entry-1'),
      redis.get('cache-entry-2'),
    ])
  )
  .then(console.log); // []. Cache entries with tag 'first-tag' are gone.

Contributors

Contributors
Mateu Aguiló Bosch

Elliott Foster

License

cache-tags is MIT licensed.

FAQs

Package last updated on 19 May 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts