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 🙏

© 2026 – Pkg Stats / Ryan Hefner

node-caching-mysql-connector-with-redis

v2.8.0

Published

MySQL caching connector with Redis, auto key generation, auto invalidation, transaction support, and TypeScript

Readme

MySQL Redis Cache Connector

npm

MySQL + Redis caching with production-grade resilience. Zero config.

Install

npm install node-caching-mysql-connector-with-redis

Setup

# .env
DB_HOST=localhost
DB_USERNAME=root
DB_PASSWORD=secret
DB_NAME=mydb
REDIS_SERVER=localhost
REDIS_PORT=6379
CORE_AUTO_FEATURES=true

Usage

const { getCacheQuery, QuaryCache, withTransaction, isRedisConnected } = require('node-caching-mysql-connector-with-redis');

// Read (auto-cached)
const users = await getCacheQuery('SELECT * FROM users WHERE id = ?', [123]);

// Write (auto cache invalidation)
await QuaryCache('INSERT INTO users (name) VALUES (?)', ['Ali']);

// Transaction (auto commit/rollback)
await withTransaction(async (tx) => {
    await tx.query('INSERT INTO orders...', [data]);
    await tx.query('UPDATE products...', [data]);
});

// Health check
app.get('/health', (req, res) => {
    res.json({ redis: isRedisConnected() });
});

API

| Function | Description | |----------|-------------| | getCacheQuery(sql, params) | Cached read | | QuaryCache(sql, params) | Write + invalidate cache | | withTransaction(fn) | Auto commit/rollback | | getCacheQueryPagination(sql, params, key, page, size) | Paginated query | | bulkInsert(table, records, options) | Bulk insert | | getCacheQueryWithTimeout(sql, params, key, options) | Query with timeout protection | | isRedisConnected() | Redis health check | | getPoolStats() | MySQL pool statistics | | closeConnections() | Graceful shutdown |

Resilience

The package is designed for production environments where failures are expected:

Redis

  • Unlimited reconnection with exponential backoff + jitter
  • Graceful degradation — reads return [], writes return data without caching
  • No crashes, no unhandled errors during Redis outages
  • SCAN instead of KEYS (cluster-safe)

MySQL

  • Connection pool with auto-reconnection (mysql2)
  • Retry with exponential backoff on connection errors
  • Transaction atomicity preserved during crashes (auto-rollback)
  • Query timeout protection

Tested against 18 chaos scenarios including: Redis/MySQL kill during operations, rapid flapping, 30s outages, network partitions, connection pool exhaustion, thundering herd (200 concurrent), bulk write crashes, concurrent transaction kills, and double failure (Redis + MySQL both down).

Config

# Required
DB_HOST, DB_USERNAME, DB_NAME, REDIS_SERVER

# Optional
DB_PASSWORD, DB_PORT=3306, REDIS_PORT=6379, REDIS_PASSWORD
DB_CONNECTION_LIMIT=151, REDIS_VHOST=namespace
CORE_AUTO_FEATURES=true, REDIS_ENABLED=true
REDIS_WAIT_TIMEOUT=10000, DB_CONNECT_TIMEOUT=10000

Use Cases

| Scenario | Guide | |----------|-------| | E-Commerce | docs/USE-CASE-ECOMMERCE.md | | Multi-Tenant SaaS | docs/USE-CASE-SAAS.md | | Real-Time Apps | docs/USE-CASE-REALTIME.md | | Bulk Operations | docs/USE-CASE-BULK.md |

Docs

License

MIT