1.0.4 • Published 12 months ago

solo-express-cache v1.0.4

Weekly downloads
-
License
MIT
Repository
-
Last release
12 months ago

Express.js Cache with Redis

This project provides a caching mechanism using Redis for GET requests in Express.js, improving performance by storing and retrieving responses.

Installation

To install dependencies

npm install express redis

Usage

cache Middleware

Use this middleware to cache server responses for GET requests and store them in Redis.

const express = require("express");
const { cache } = require("solo-express-cache");

const app = express();

app.use(cache());

Parameters

  • uncachedPath (optional): An array of paths that should not be cached. Can be strings or RegExp.
  • cacheEX (optional): Expiration time for cache (in seconds), which can be a number or an object with specific paths and expiration times. ( default is 3600 )
  • redisOptions (optional): An object of your redis config including url and password.
  • customRedisClient (optional): custom redis client if you have a custimized redis client
  • maxScanCount (optional): the maximum scan count ( used in invalidateCache )

cache Middleware With Parameters

app.use(cache({
    uncachedPath: ['/login', /^\/admin/],
    cacheEX: {
        default: 3600, 
        '/home': 1800,
        matchs: [[/^\/products/, 7200]]
    },
    redisOptions: { url: "redis://localhost:6379", password: "YOUR_PASSWORD" },
    maxScanCount: 1000
}));

cache Method In Get Requests

after setting cache middleware an app you are access cache method in response which cen be true or false, the value of cache parameter represent request caching

exports.getAll = async (req, res, next) => {
    try {
        const posts = await PostModel.find({}).lean();
        return res.cache(false).json(posts);
    } catch (error) {
        next(error);
    }
};

invalidateCache Function

Use this function to delete cached paths. this function take a path or pattern and delete cached keys.

const { invalidateCache } = require("solo-express-cache");

// Remove cache for '/home'
invalidateCache('/home');

// Remove multiple paths
invalidateCache('/home', '/about', '/contact');

// Remove With Pattern
invalidateCache({ pattern: "/posts/*" })

// Remove All
invalidateCache("*")

Performance Considerations

  • Redis is an in-memory database, providing very fast data storage and retrieval, which helps reduce response time for cached requests.
  • Using cache reduces server load, allowing for better scaling and handling more requests.
  • Be mindful of the size of cached data and the expiration times to avoid filling up the Redis memory unnecessarily.

Conclusion

This caching system helps improve server performance by caching GET requests in Redis and efficiently managing cached data.

1.0.4

12 months ago

1.0.3

12 months ago

1.0.2

12 months ago

1.0.1

12 months ago

1.0.0

12 months ago