A Redis-based, fully automated and scalable database query cache layer for Laravel.
Lada Cache is a Redis-based, fully automated database query cache layer for Laravel. It intercepts and caches SQL queries transparently, automatically invalidating cached results when underlying data changes. This solves the problem of repetitive, inefficient database queries in Laravel applications, reducing database load and improving response times.
Laravel developers building database-heavy applications, especially those using Eloquent extensively and seeking to reduce database load and improve performance without manual caching logic.
Developers choose Lada Cache because it provides fully automated caching with granular invalidation, requiring no code changes after setup. Unlike manual caching or RDBMS internal caches, it offers distributed, scalable performance via Redis and transparent integration with Laravel's database layer.
A Redis based, fully automated and scalable database cache layer for Laravel
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Requires no code changes after initial setup; all database queries through Eloquent and Query Builder are cached transparently, as highlighted in the README's 'Features' section.
Automatically invalidates only affected rows or tables on data modifications, preventing stale cache without manual logic, based on the architecture described for query lifecycle.
Leverages in-memory Redis for speed and supports clustering, enabling horizontal scalability and significant database load reduction, with real-world performance gains noted.
Provides visual feedback on cache hits, misses, and invalidations in the debug toolbar, aiding performance monitoring without extra tooling, as mentioned in the key features.
Limited to Redis for caching; the README admits this design choice and notes contributions are welcome for other backends, which can be restrictive for some infrastructure setups.
Raw SQL executed directly via the connection (e.g., DB::select()) is not cached by design, meaning parts of the application may not benefit from automatic caching.
For SQL with advanced expressions like UNION, invalidation may fall back to table-level tags instead of row-level, potentially reducing cache efficiency, as noted in known issues.