Redis
 sql >> Database >  >> NoSQL >> Redis

Comprensione della memorizzazione nella cache di Laravel:Cache facciata e Redis

Comune:

Sono tutti cache .

Sono tutti utilizzati per ridurre il costo del tempo .

Differente:

Configurazioni e percorsi:

Appartiene a applicazione . Lo chiamiamo Application Cache .

php artisan config:cache
php artisan route:cache

Questi due comandi memorizzano nella cache percorsi e configurazioni.

PERCORSO:

Sono sempre archiviati in bootstrap/cache/

In esecuzione

php artisan config:clear
php artisan route:clear

Cancella solo le directory e i file in bootstrap/cache/ .

Sono statici . Quindi vengono modificati solo quando li modifichi.

Vantaggio

Se li modifichi, devi clear e cache manualmente.

Dopo aver memorizzato questi percorsi e configurazioni.

Laravel non ha bisogno di leggere nuovamente le configurazioni e le rotte dal file che ha richiesto un costo di tempo IO.

Cache del filesystem e cache Redis:

Anche la cache del filesystem e la cache Redis sono entrambe cache.

Tuttavia, utilizzano driver diversi memorizzare i dati, significa dove memorizzi i dati di memorizzazione nella cache .

PERCORSO del filesystem:se si utilizza il driver del filesystem. sono memorizzati in storage/framework/cache/

Reids PATH:Memorizzazione dei dati in redis per valore-chiave.

Quando li usi?

Quando hai scoperto che ci sono molte richieste a questo codice per ottenere dati. E questi dati non vengono modificati così velocemente.

Puoi usare la cache per archiviarli, e poi, la prossima volta che un'altra richiesta a questo api.it prendi semplicemente i dati dalla cache.come di seguito:

$posts = Cache::remember('index.posts', 30, function()
{return Post::with('comments', 'tags', 'author', 'seo')->whereHidden(0)->get();});

La prima richiesta ottiene i dati dei post dal database, quindi memorizza questi dati nella cache (Reids o Filesystem) scaduti dopo 30 sec.

La prossima richiesta ottiene i dati dei post solo tramite la cache. Non hanno bisogno di cercare nuovamente nei database.

E questo:

use Illuminate\Support\Facades\Redis; 

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

Significa quando le persone richiedono localhost:8000/ , il conteggio delle visite degli utenti aumenta in redis (non è necessario archiviare nel database, costa più tempo), la prossima volta, quando la richiesta di ricerca del conteggio delle visite, può essere trovata in redis molto velocemente.

PS:qui usa Redis Facade, quindi i dati vengono archiviati in redis .

Se stai usando redis come driver della cache, Cache::remember() memorizzerà anche i dati in redis.

Tuttavia, utilizzando Redis Facade, puoi utilizzare molti metodi redis.

Quale è meglio?

Penso redis è migliore di filesystem .

  1. Perché redis archivia i dati in memoria e il filesystem archivia su disco. La lettura dei dati dalla memoria è più veloce rispetto al disco.

  2. Operare datas in Redis è più facile rispetto a Filesystem. Ad esempio, il supporto Redis cancella tutta la cache per un tag specifico, ma il filesystem non può[Perché il filesystem memorizza i dati della cache in base al nome della chiave crittografata].

  3. Per distribuito server, la cache del filesystem è una cattiva idea. Minore percentuale di riscontro nella cache.

Onestamente, ci sono altri driver che possono essere scelti, come mongodb .

A proposito, il mio inglese non è molto buono, spero che tu capisca.