sql >> Databasteknik >  >> NoSQL >> Redis

Förstå Laravel-cache:Cachefasad och Redis

Vanligt:

De är alla cache .

De används alla för att minska tidskostnaderna .

Differenet:

Konfigurationer och rutter:

Den tillhör applikationen . Vi kallar det Applikationscache .

php artisan config:cache
php artisan route:cache

Dessa två kommandon cachelagrar rutter och konfigurationer.

SÖG:

De lagras alltid i bootstrap/cache/

Kör

php artisan config:clear
php artisan route:clear

Rensa endast katalogerna och filerna i bootstrap/cache/ .

De är statiska . Så de ändras bara när du ändrar dem.

Fördel

Om du ändrar dem måste du clear och cache dem manuellt.

När du har kontrollerat dessa rutter och konfigurationer.

Laravel behöver inte läsa konfigurationer och rutter från filen igen vilket tog IO tidskostnad.

Filsystemcache och Redis-cache:

Filsystemcache och Redis-cache är båda cache också.

Däremot använder de annan drivrutin att lagra data, betyder var du lagrar cachingdata .

Filsystem PATH:Om du använder filsystemdrivrutin. de lagras i storage/framework/cache/

Reids PATH:Data lagras i redis efter nyckel-värde.

När använder du dem?

När du upptäckte att det finns många begäranden till den här koden för att få data. Och dessa data ändras inte så snabbt.

Du kan använda cache för att lagra dem, och sedan, nästa gång en annan begäran till denna api.it tar bara data från cache.like nedan:

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

Den första begäran hämtar inläggens data från databasen och lagrar sedan dessa data i cachen (Reids eller filsystem) som löpte ut efter 30 sek.

Nästa begäran få inläggsdata endast via cache. De behöver inte söka i databaser igen.

Och den här:

use Illuminate\Support\Facades\Redis; 

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

Innebär när människor begär localhost:8000/ , användares besöksantal ökar i redis (behöver inte lagra i databasen, det kostar mer tid), nästa gång, när förfrågan om att söka besök räknas, kan den hittas i redis väldigt snabbt.

PS:Använd här Redis Facade, då lagras data i redis .

Om du använder redis som cachedrivrutin, Cache::remember() kommer att lagra data i redis också.

Men med Redis Facade kan du använda många redis-metoder.

Vilket är bättre?

Jag tror redis är bättre än filesystem .

  1. Eftersom redis lagra data i minnet och filsystem lagra på disk. Läsa data från minnet är snabbare än disk.

  2. Drift data i Redis är enklare än filsystem. Redis stödjer till exempel att rensa all cache för en specifik tagg, men filsystemet kan inte[Eftersom filsystemet lagrar cachedata med krypterad nyckels namn].

  3. För distribuerat server, filsystemcache är en dålig idé. Lägre cacheträffförhållande.

Ärligt talat, det finns andra drivrutiner som kan väljas, som mongodb .

Förresten, min engelska är inte särskilt bra, hoppas du förstår.




  1. Topp MongoDB-resurser

  2. Hur man infogar flera objekt samtidigt i en MongoDB-samling

  3. TypeError:db.collection är inte en funktion

  4. Failover för MySQL-replikering (och andra) - bör det automatiseras?