Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Entendendo o cache do Laravel:Fachada de cache e Redis

Comum:


Eles são todos em cache .

Todos eles são usados ​​para reduzir o custo do tempo .

Diferença:

Configurações e rotas:


Pertence ao aplicativo . Nós o chamamos de Cache de Aplicativo .
php artisan config:cache
php artisan route:cache

Esses dois comandos estão armazenando em cache rotas e configurações.

CAMINHO:


Eles são sempre armazenados em bootstrap/cache/

Encontro
php artisan config:clear
php artisan route:clear

Limpe apenas os diretórios e arquivos em bootstrap/cache/ .

Eles são estáticos . Portanto, eles só são alterados quando você os altera.

Benefício


Se você alterá-los, você precisa clear e cache -los manualmente.

Depois de cahce essas rotas e configurações.

Laravel não precisa ler as configurações e rotas do arquivo novamente que levou o custo de tempo de IO.

Cache do sistema de arquivos e cache do Redis:


O cache do sistema de arquivos e o cache do Redis também são cache.

No entanto, eles usam drivers diferentes para armazenar os dados, significa onde você armazena os dados de cache .

Filesystem PATH:Se você estiver usando o driver do sistema de arquivos. eles são armazenados em storage/framework/cache/

Reids PATH:armazenamento de dados em redis por valor-chave.

Quando você os usa?


Quando você descobriu que existem muitos pedidos para este código para obter dados. E esses dados não são alterados tão rápido.

Você pode usar o cache para armazená-los e, na próxima vez, outra solicitação para esta api.it apenas pegue os dados do cache.como abaixo:
$posts = Cache::remember('index.posts', 30, function()
{return Post::with('comments', 'tags', 'author', 'seo')->whereHidden(0)->get();});

A primeira solicitação obtém os dados das postagens do banco de dados e, em seguida, armazena esses dados em cache (Reids ou Filesystem) expirados após 30 segundos.

A próxima solicitação obtém os dados das postagens apenas por meio do cache. Eles não precisam pesquisar em bancos de dados novamente.

E este:
use Illuminate\Support\Facades\Redis; 

Route::get('/', function () { 
     $visits = Redis::incr('visits'); 
     return $visits; 
});

Significa quando as pessoas solicitam localhost:8000/ , contagem de visitas dos usuários aumentando em redis (não precisa armazenar em banco de dados, custa mais tempo), na próxima vez, quando solicitar a contagem de visitas de pesquisa, ela pode ser encontrada em redis muito rapidamente.

PS:Aqui use Redis Facade, então os dados são armazenados em redis .

Se você estiver usando redis como driver de cache, Cache::remember() armazenará dados em redis também.

No entanto, usando o Redis Facade, você pode usar muitos métodos redis.

Qual ​​é melhor?


Acho que redis é melhor que filesystem .

  1. Porque redis armazenar dados na memória e armazenamento do sistema de arquivos no disco. Ler dados da memória é mais rápido do que disco.

  2. Operar datas no Redis é mais fácil do que o sistema de arquivos. Por exemplo, o Redis suporta limpar todo o cache para uma tag específica, mas o sistema de arquivos não pode [Porque o sistema de arquivos armazena dados de cache pelo nome da chave criptografada].

  3. Para distribuídos servidor, o cache do sistema de arquivos é uma má ideia. Taxa de acertos de cache mais baixa.

Honestamente, existem outros drivers que podem ser escolhidos, como mongodb .

A propósito, meu inglês não é muito bom, espero que você entenda.