DialCache documentation
DialCache wraps application reads with explicit enablement, layered storage, and runtime policy. These guides explain its model and feature behavior; the API reference collects each port's native options and contracts. Choose TypeScript, Go, Rust or Python in the site selector: shared behavior stays on the same page, while examples and integration notes follow your selection.
Learn the model
- Getting started: run a reader inside an enabled scope.
- How DialCache works: follow a read through layers and shared work.
- Keys and identity: define a cached result and its invalidation group.
- Configuration and rollout: combine defaults and overrides, choose key cohorts, and understand changes to a running service.
Feature guides
| Feature | What it explains |
|---|---|
| Targeted invalidation | Entity watermarks, in-flight races, and reuse boundaries |
| Stale-on-error | Fresh and recovery ages, eligible errors, and retained snapshots |
| Shadow validation | Cache coherence through sampling, confirmation, and optional fills |
| Coalescing and liveness | Shared work, caller deadlines, and in-flight state |
Reference and integrations
| Reference | What it covers |
|---|---|
| API | Methods, options, defaults, validation, errors, and exports |
| Redis and Valkey | Client setup, serialization, compression, adapter contracts, and wire protocol |
| Observability | Prometheus and Datadog setup, metric semantics, and custom adapters |
| Upgrading | Protocol cutovers, retention, serializers, and metric migrations |
| Maintainer guide | Validation, documentation, benchmarks, and releases |
Language guides
| Port | Native integration details |
|---|---|
| TypeScript | Node.js async context, serializers, optional client adapters |
| Go | Context propagation, generic operations, duration and overlay types |
| Rust | Scope guards, Arc<T> values, runtime and feature flags |
| Python | Async decorators, contextvars scopes, native values and application-owned Redis clients |
Behavior catalogue connects shared contracts to the existing formal cases. Documentation authoring explains how to change shared prose, tested native examples and generated references together.
Find an answer
| Question | Start here |
|---|---|
| Why is my loader still running? | Enabled scopes, layer policy, and miss reasons |
| Why did changing a TTL leave an old value in cache? | Policy changes and existing entries |
| Why can I still see a value after invalidation? | Reuse boundaries |
| Why are callers sharing a timeout or result? | What followers inherit |
| What can still wait after the source deadline? | Application-owned budgets |
| Why is shadow validation doing no work? | Shadow eligibility |
The published site and generated native API references follow main, which may be ahead of a released npm package, Go module or Rust crate. For an installed version, use its release notes and matching release tag. See the Rust guide for registry releases and checkout dependencies. Python is currently unpublished and installed from a checkout as described in the Python guide.