mcpField
Q
query-caching-strategies

query-caching-strategies

github.com/aj-geddesData & databases373461 installsUpdated 34w ago
Repository

About query-caching-strategies

A skill for designing query caching with Redis, Memcached, and database-level caches. It covers cache invalidation, TTLs, and cache warming for workloads where reducing database load or response time matters.

Key features

  1. 01Redis and Memcached caching
  2. 02Database-level query caching
  3. 03Cache invalidation patterns
  4. 04TTL strategies
  5. 05Cache warming

Use cases

  1. 01Caching frequent query results
  2. 02Reducing database load on read-heavy systems
  3. 03Improving response times
  4. 04Choosing a distributed cache approach

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/aj-geddes/useful-ai-prompts --skill query-caching-strategies

After installing, type/query-caching-strategiesin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
event-based-invalidation.md
memcached-caching.md
mysql-query-cache.md
postgresql-query-cache.md
redis-caching-with-postgresql.md
time-based-invalidation.md
scripts/
validate-schema.sh
templates/
migration-template.sql

Details

From the project README

Query Caching Strategies

Table of Contents

Overview

Implement multi-level caching strategies using Redis, Memcached, and database-level caching. Covers cache invalidation, TTL strategies, and cache warming patterns.

When to Use

  • Query result caching
  • High-read workload optimization
  • Reducing database load
  • Improving response time
  • Cache layer selection
  • Cache invalidation patterns
  • Distributed cache setup

Quick Start

Minimal working example:

// Node.js example with Redis
const redis = require("redis");
const client = redis.createClient({
  host: "localhost",
  port: 6379,
  db: 0,
});

// Get user with caching
async function getUser(userId) {
  const cacheKey = `user:${userId}`;

  // Check cache
  const cached = await client.get(cacheKey);
  if (cached) return JSON.parse(cached);

  // Query database
  const user = await db.query("SELECT * FROM users WHERE id = $1", [userId]);

  // Cache result (TTL: 1 hour)
  await client.setex(cacheKey, 3600, JSON.stringify(user));
  return user;
}

// Cache warming on startup
// ... (see reference guides for full implementation)

Reference Guides

Detailed implementations in the references/ directory:

GuideContents
Redis Caching with PostgreSQLRedis Caching with PostgreSQL
Memcached CachingMemcached Caching
PostgreSQL Query CachePostgreSQL Query Cache
MySQL Query CacheMySQL Query Cache
Event-Based InvalidationEvent-Based Invalidation
Time-Based InvalidationTime-Based Invalidation, LRU Cache Eviction

Best Practices

✅ DO
  • Follow established patterns and conventions
  • Write clean, maintainable code
  • Add appropriate documentation
  • Test thoroughly before deploying
❌ DON'T
  • Skip testing or validation
  • Ignore error handling
  • Hard-code configuration values

Comments

Markdown supported