solo-express-cache
v1.0.4
Published
Fast, Customizable And Easy To Use!
Downloads
4
Maintainers
Readme
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 clientmaxScanCount
(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.