Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Cache e travas

Para usar o MongoDB como backend para o Laravel Cache and Locks, adicione uma configuração de armazenamento especificando o mongodb driver config/cache.php em:

'stores' => [
'mongodb' => [
'driver' => 'mongodb',
'connection' => 'mongodb',
'collection' => 'cache',
'lock_connection' => 'mongodb',
'lock_collection' => 'cache_locks',
'lock_lottery' => [2, 100],
'lock_timeout' => 86400,
],
],

Para configurar a conexão do banco de dados do mongodb, consulte a seção Guia de Conexão.

A tabela a seguir descreve uma lista de opções de cache e bloqueio e seus valores padrão:

Contexto
Descrição

driver

Obrigatório. Especifica o driver de bloqueio a ser usado. Deve ser mongodb.

connection

Obrigatório. A conexão do banco de dados utilizada para armazenar itens de cache. Deve ser uma conexão mongodb .

collection

Padrão cache. Nome da coleção MongoDB para armazenar itens de cache.

lock_connection

Padrão para o cache connection. A conexão do banco de dados usada para armazenar travas. Deve ser uma conexão mongodb .

lock_collection

Padrão cache_locks. Nome da collection MongoDB para armazenar travas.

lock_lottery

Padrão [2, 100]. Probabilidade [chance, total] de podar itens de cache expirados. Defina como [0, 0] para desativar.

lock_timeout

Padrão 86400. Tempo de vida útil das travas, em segundos.

The TTL indexes integrated into MongoDB automatically delete documents when they expire. Their use is optional with the mongodb driver, but recommended. The indexes provide better performance by delegating the deletion of expired documents to MongoDB instead of requiring the application to perform this task.

Crie os índices com uma migração que chama os métodos createTTLIndex() fornecidos pelo cache e pelos armazenamentos de travas:

<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\Cache;
return new class extends Migration
{
public function up(): void
{
$store = Cache::store('mongodb');
$store->createTTLIndex();
$store->lock('')->createTTLIndex();
}
};

Em seguida, execute a migração:

php artisan migrate

Alternatively, you can create the index by using MongoDB Shell (mongosh):

db.cache.createIndex(
/* Field that holds the expiration date */
{ expires_at: 1 },
/* Delay to remove items after expiration */
{ expireAfterSeconds: 0 }
)

Se você usar Travas, desative lock_lottery definindo a probabilidade como 0:

'stores' => [
'mongodb' => [
'driver' => 'mongodb',
'connection' => 'mongodb',
'lock_lottery' => [0, 100], // Disabled
],
],

O cache do Laravel pode ser usado para armazenar quaisquer dados serializáveis usando a face Illuminate\Support\Facades\Cache.

Este exemplo executa as seguintes ações:

  • Obtém o repositório de cache com o armazenamento mongodb

  • Tenta ler e retornar o item de cache chamado foo

  • Se estiver ausente, chama o fechamento para calcular o valor, armazena o valor para sempre e o retorna

use Illuminate\Support\Facades\Cache;
$value = Cache::store('mongodb')->get('foo', function () {
return [1, 2, 3];
});

Por padrão, os objetos armazenados em cache não expiram. No entanto, é possível definir um tempo de expiração, como mostrado no exemplo a seguir:

Cache::store('mongodb')->set('foo', 'abc', '1 day');

O incremento e o decremento de um valor também são suportados se o valor for inicializado antes. O exemplo a seguir inicializa o contador para 3, adiciona 5 e remove 2.

Cache::store('mongodb')->set('counter', 3);
Cache::store('mongodb')->increment('counter', 5);
Cache::store('mongodb')->decrement('counter', 2);

Observação

A integração do Laravel suporta incrementar e decrementar com valores inteiros e flutuantes.

Para mais informações sobre como utilizar o cache, consulte a documentação do Laravel Cache.

Para usar o armazenamento mongodb por padrão, altere o armazenamento padrão em config/cache.php.

return [
'default' => env('CACHE_STORE', 'mongodb'),
'stores' => [
'mongodb' => [
'driver' => 'mongodb',
'connection' => 'mongodb',
],
],
];

Observação

Omitimos deliberadamente todos os parâmetros opcionais no exemplo anterior, para que os valores padrão sejam aplicados.

A variável CACHE_STORE pode ser configurada em seu ambiente ou no arquivo .env . Atualize ou remova-o da seguinte maneira:

CACHE_STORE=mongodb

Em seguida, você pode usar a Illuminate\Support\Facades\Cache e a injeção automática:

use Illuminate\Support\Facades\Cache;
Cache::get('foo', 5);

O exemplo a seguir mostra como usar a injeção automática do gerenciador de cache usando o armazenamento padrão. O exemplo cria um controlador que incrementa um contador cada vez que é invocado.

<?php
namespace App\Http\Controllers;
use App\Contracts\CacheManager;
class CountController extends Controller
{
public function __construct(
private CacheManager $cache,
) {}
public function hit(): int
{
return $this->cache->increment('counter');
}
}

As travas atômicas permitem a manipulação de travas distribuídas sem se preocupar com condições de corrida. O exemplo a seguir implementa uma trava atômica:

use Illuminate\Support\Facades\Cache;
$lock = Cache::store('mongodb')->lock('foo', 10);
if ($lock->get()) {
// Lock acquired for 10 seconds...
$lock->release();
}

Para obter mais informações sobre o uso de travas, consulte a documentação de travas do Laravel.

Avalie esta página