> For the complete documentation index, see [llms.txt](https://quantumphp.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://quantumphp.gitbook.io/docs/packages/cache/usage.md).

# Usage

Use Cache when you want simple read-through and write-through storage behind one helper.

## Store and read a value

```php
cache()->set('homepage.featured-posts', $posts, 300);

$posts = cache()->get('homepage.featured-posts', []);
```

Pass a default value to `get()` when your code should keep working on a cache miss.

## Choose a backend explicitly

```php
$fileCache = cache('file');
$redisCache = cache('redis');
```

Use an explicit adapter when one part of the app must use a different backend than `cache.default`.

Repeated calls for the same adapter reuse the same factory-managed wrapper during the current runtime.

## Use a `DateInterval` TTL

```php
$ttl = new DateInterval('PT15M');

cache()->set('report.summary', $summary, $ttl);
```

This is useful when your app already works with interval objects instead of raw seconds.

## Work with multiple keys

```php
cache()->setMultiple([
    'nav.main' => $nav,
    'footer.links' => $links,
], 600);

$fragments = cache()->getMultiple([
    'nav.main',
    'footer.links',
], []);
```

Use arrays for batch operations. Generators and other iterable objects are rejected.

## Invalidate carefully

```php
cache()->delete('homepage.featured-posts');
```

Prefer targeted deletes.

`clear()` is a broad operation:

* file clears the whole configured directory
* database clears the whole configured table
* Memcached flushes the server
* Redis flushes the selected database

In shared environments, `clear()` can remove unrelated cache entries.

## Choose the right backend

* choose `file` for a simple single-host cache
* choose `database` when you want cache state in your relational data store
* choose `memcached` or `redis` when multiple workers or servers must share cache state

## Common pitfalls

* do not rely on storage-level key names; built-in adapters hash them with the configured prefix
* make sure the database adapter's table already exists
* handle external service failures when using Memcached or Redis
* treat corrupted cache data as a normal miss; the built-in adapters delete unreadable entries automatically


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://quantumphp.gitbook.io/docs/packages/cache/usage.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
