Especialização em Backend com PHP & Laravel • Demonstrações Práticas Compiláveis


💻 Exemplo 1 — Cache::remember() com Auto-População

<?php
use Illuminate\Support\Facades\Cache;
use App\Models\Produto;

class ProdutoService
{
    public function listarAtivos()
    {
        return Cache::remember('produtos:ativos', 3600, function () {
            return Produto::where('ativo', true)->get();
        });
    }
}

💻 Exemplo 2 — Cache Tags para Invalidação Granular

<?php
use Illuminate\Support\Facades\Cache;

// Gravando com múltiplas tags
Cache::tags(['produtos', 'categorias'])->put('produtos:categoria:5', $produtos, 3600);

// Invalidando SÓ a tag 'produtos' quando um produto é alterado
class ProdutoObserver
{
    public function saved(Produto $produto): void
    {
        Cache::tags('produtos')->flush();
    }
}

💻 Exemplo 3 — Cache-Aside vs. Write-Through

<?php
// Cache-Aside (lazy): só popula no próximo READ após expirar
public function buscar(int $id)
{
    return Cache::remember("produto:{$id}", 3600, fn () => Produto::findOrFail($id));
}

// Write-Through: popula no exato momento da escrita
public function atualizar(Produto $produto, array $dados): Produto
{
    $produto->update($dados);
    Cache::tags('produtos')->put("produto:{$produto->id}", $produto, 3600);
    return $produto;
}