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-me/redis

v1.0.0

Published

An add-on to @cach-me/base that adds support for Redis.

Downloads

6

Readme

@cache-me/redis

This package provides caching with Redis and is an add-on to the @cache-me/base library.

You can find more information around the @cache-me packages in the official Github repository.

In Redis cache

This is an addon caching strategy to be used in conjunction with the @cache-me/base packages' cacheMe function. It stores values in a Redis server or cluster.

This offers several advantages to caching values in application RAM (inMemory strategy):

  • shared memory across multiple instances of an application or even multiple different applications
  • cache can be maintained beyond the lifetime of a running app

Examples

import { cacheMe } from '@cache-me/base';
import { inRedis } from '@cache-me/redis';
import { Redis } from 'ioredis';

const redis = new Redis({ host: 'your-redis-server-address', port: 6379 });

// cache in Redis
cacheMe(function, inRedis({ redis }));

// cache in Redis, expire values after 2000 ms
cacheMe(function, inRedis({ redis, ttlInMs: 2000 }));

// only cache values when API request was successful
cacheMe(function, inRedis({ redis, cacheWhen: value => {
    return (await value).statusCode === 200;
}}));

// only cache values when API request was successful. Expire values after 2000 ms
cacheMe(function, inRedis({ redis, ttlInMs: 2000, cacheWhen: value => {
    return (await value).statusCode === 200;
}}));

Cache configuration

The in redis cache accepts following configurations:

export type Config<ReturnValue> = {
    redis: RedisCommander;
    ttlInMs?: number;
    cacheWhen?: (value: ReturnValue) => Promise<boolean>;
};

Configuration options are optional besides the Redis client. The library supports Redis clients established by the ioredis package.

redis

Expects a client provided by ioredis. It can be any implementation as the argument accepts a generic RedisCommander (= interface) object. For more details look into the packages' Redis and/or Cluster implementations.

ttlInMs

Sets the "time to live" on a value in the cache. The value is in milliseconds and defines the time until the value expires and is removed from Redis.

cacheWhen

Tells the cache when to cache values. You can pass in an async function that takes a single argument and returns a boolean. The argument has to be the same type as the cached functions return type.

Returning "true" means values are being cached. The cache uses this config to decide whether to store values to function calls in Redis. If not provided, values are always cached.