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

Forstå Laravel caching:Cache facade og Redis

Almindelig:

De er alle cache .

De bruges alle til at reducere tidsomkostninger .

Differenet:

Konfigurationer og ruter:

Det hører til applikationen . Vi kalder det Applikationscache .

php artisan config:cache
php artisan route:cache

Disse to kommandoer cachelagrer ruter og konfigurationer.

STI:

De er altid gemt i bootstrap/cache/

Kører

php artisan config:clear
php artisan route:clear

Ryd kun mapperne og filerne i bootstrap/cache/ .

De er statiske . Så de ændres kun, når du ændrer dem.

Fordel

Hvis du ændrer dem, skal du clear og cache dem manuelt.

Når du har kontrolleret disse ruter og konfigurationer.

Laravel behøver ikke at læse konfigurationerne og ruterne fra filen igen hvilket tog IO tidsomkostninger.

Filsystem-cache og Redis-cache:

Filsystem-cache og Redis-cache er også begge cache.

De bruger dog anden driver at gemme dataene, betyder hvor du gemmer cachedataene .

Filsystem PATH:Hvis du bruger filsystemdriver. de er gemt i storage/framework/cache/

Reids PATH:Data lagres i redis efter nøgleværdi.

Hvornår bruger du dem?

Da du fandt ud af, at der er mange anmodninger om denne kode for at få data. Og disse data ændres ikke så hurtigt.

Du kan bruge cache til at gemme dem, og derefter, næste gang en anden anmodning til dette api.it bare tage data fra cache.like nedenfor:

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

Den første anmodning henter indlæggenes data fra databasen, og gem derefter disse data i cache (Reids eller Filsystem) udløb efter 30 sek.

Næste anmodning få posts data kun gennem cache. De behøver ikke at søge i databaser igen.

Og denne:

use Illuminate\Support\Facades\Redis; 

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

Betyder, når folk anmoder om localhost:8000/ , brugernes besøgstal stiger i redis (behøver ikke at gemme i databasen, det koster mere tid), næste gang, når anmodningen om at søge besøg tæller, kan den findes i redis meget hurtigt.

PS:Brug her Redis Facade, så gemmes dataene i redis .

Hvis du bruger redis som cache-driver, Cache::remember() vil også gemme data i redis.

Men ved at bruge Redis Facade kan du bruge mange redis-metoder.

Hvilken er bedre?

Jeg tror redis er bedre end filesystem .

  1. Fordi redis gem data i hukommelsen, og filsystem gemmer på disk. Læsning af data fra hukommelsen er hurtigere end disk.

  2. Betjene data i Redis er lettere end filsystem. Redis understøtter f.eks. at rydde al cache for et specifikt tag, men filsystemet kan ikke[Fordi filsystemet gemmer cachedata efter krypterede nøglenavn].

  3. Til distribueret server, er filsystemcache en dårlig idé. Lavere cache hit ratio.

Helt ærligt, der er andre drivere, der kan vælges, såsom mongodb .

Mit engelsk er i øvrigt ikke særlig godt, håber du forstår.




  1. Sådan rettes Redis-nøgler serialiseret med Java

  2. Klasse 'MongoClient' blev ikke fundet

  3. Design af en applikation med Redis som datalager. Hvad? Hvorfor?

  4. deling af IO-objekt i flere node-forekomster