Agent skill
redis
Implements caching layer with Redis or memory fallback using aiocache. Use when: Adding cache operations, modifying TTLs, implementing cache invalidation patterns, or debugging cache behavior.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/redis-boludo00-bookkeep
SKILL.md
Redis Skill
Bookkeep uses aiocache with Redis 7.x for distributed caching, automatically falling back to in-memory cache when Redis is unavailable. The cache layer is defined in backend/app/cache.py and provides async get/set/delete operations with pattern-based invalidation.
Quick Start
Basic Cache Operations
from app.cache import get_cached, set_cached, delete_cached, make_cache_key, CACHE_TTL
# Get with cache
cache_key = make_cache_key("book_details", book_id=123)
cached = await get_cached(cache_key)
if cached is not None:
return cached
# Fetch and cache
result = await fetch_book(book_id)
await set_cached(cache_key, result, ttl=CACHE_TTL["book_details"])
return result
Cache Invalidation on Mutation
from app.cache import delete_cached, clear_cache_pattern, make_cache_key
# Single key invalidation
await delete_cached(make_cache_key("requests_by_hardcover", hardcover_id=book.hardcover_id))
# Pattern-based invalidation (clears all batch caches)
await clear_cache_pattern("requests_by_hardcover_batch:*")
Key Concepts
| Concept | Usage | Example |
|---|---|---|
make_cache_key |
Create deterministic keys from prefix + sorted kwargs | make_cache_key("search", query="foo", limit=10) → search:limit:10:query:foo |
CACHE_TTL |
Dict of resource → seconds | CACHE_TTL["trending"] → 86400 (24h) |
CACHE_RESOURCES |
Admin UI resource groups with patterns | {"books": {"patterns": ["book_details:*", "search:*"]}} |
| Pattern clear | Glob-style deletion for invalidation | clear_cache_pattern("series:*") |
Common Patterns
Cache-Aside Pattern (Standard)
When: Every read operation that hits external API or expensive DB query
cache_key = cache.make_cache_key("trending", limit=limit, date=current_date)
cached_result = await cache.get_cached(cache_key)
if cached_result is not None:
return cached_result
# Expensive operation
result = await hardcover_api.fetch_trending(limit)
await cache.set_cached(cache_key, result, ttl=cache.CACHE_TTL["trending"])
return result
Bypass Cache (Force Refresh)
When: User explicitly requests fresh data
cache_key = cache.make_cache_key("book_details", book_id=book_id)
cached_result = None if bypass_cache else await cache.get_cached(cache_key)
TTL Reference
| Resource | TTL | Rationale |
|---|---|---|
trending, popular, new_releases |
24h | Updated via background job |
book_details, author |
24h | Metadata rarely changes |
series |
7 days | Very stable data |
search, search_grouped |
30min | Query results can change |
requests_by_hardcover |
5min | Status changes frequently |
See Also
- patterns
- workflows
Related Skills
- See the fastapi skill for router integration
- See the python skill for async patterns
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?