sql >> Databáze >  >> NoSQL >> Redis

Porozumění ukládání do mezipaměti Laravel:Fasáda mezipaměti a Redis

Běžné:

Všechny jsou mezipaměti .

Všechny se používají ke snížení časových nákladů .

Rozdíl:

Konfigurace a trasy:

Patří do aplikace . Říkáme tomu Aplikační mezipaměť .

php artisan config:cache
php artisan route:cache

Tyto dva příkazy ukládají do mezipaměti trasy a konfigurace.

CESTA:

Jsou vždy uloženy v bootstrap/cache/

Běh

php artisan config:clear
php artisan route:clear

Vymažte pouze adresáře a soubory v bootstrap/cache/ .

Jsou statické . Takže se změní pouze tehdy, když je změníte.

Výhoda

Pokud je změníte, musíte je clear a cache ručně.

Po uložení těchto tras a konfigurací.

Laravel nemusí znovu číst konfigurace a trasy ze souboru což si vyžádalo časové náklady IO.

Cache systému souborů a mezipaměť Redis:

Mezipaměť systému souborů a mezipaměť Redis jsou také mezipaměť.

Používají však jiný ovladač ukládat data, znamená kam ukládáte data z mezipaměti .

Filesystem PATH:Pokud používáte ovladač souborového systému. jsou uloženy v storage/framework/cache/

Reids PATH:Data jsou uložena v redis podle páru klíč–hodnota.

Kdy je používáte?

Když jste zjistili, že na tento kód existuje mnoho požadavků na získání dat. A tato data se nemění tak rychle.

K jejich uložení můžete použít mezipaměť a při příštím požadavku na tento api.it stačí vzít data z cache.like níže:

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

První požadavek na získání dat příspěvků z databáze a poté uložení těchto dat do mezipaměti (Reids nebo Filesystem) vypršela po 30 sekundách.

Další požadavek získat data příspěvků pouze prostřednictvím mezipaměti. Nepotřebují znovu hledat v databázích.

A tohle:

use Illuminate\Support\Facades\Redis; 

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

Znamená, když lidé požadují localhost:8000/ , počet návštěv uživatelů se zvyšuje v redis (není nutné ukládat do databáze, stojí to více času), příště, až bude požadavek na vyhledání počítat návštěv, bude nalezen v redis velmi rychle.

PS:Zde použijte Redis Facade, pak jsou data uložena v redis .

Pokud jako ovladač mezipaměti používáte redis, Cache::remember() bude také ukládat data do redis.

Pomocí Redis Facade však můžete použít mnoho metod redis.

Co je lepší?

Myslím, že redis je lepší než filesystem .

  1. Protože redis ukládat data do paměti a souborový systém ukládat na disk. Čtení dat z paměti je rychlejší než disk.

  2. Ovládejte data v Redis je snazší než souborový systém. Redis například podporuje vymazání veškeré mezipaměti pro konkrétní značku, ale souborový systém nemůže [Protože souborový systém ukládá data mezipaměti podle názvu šifrovaného klíče].

  3. Pro distribuované server, mezipaměť souborového systému je špatný nápad. Nižší poměr mezipaměti.

Upřímně řečeno, lze zvolit i jiné ovladače, například mongodb .

Mimochodem, moje angličtina není moc dobrá, doufám, že mi rozumíte.




  1. MongoDB $mul

  2. Mohu provést textový dotaz s ovladačem mongodb c#

  3. Průsečík Mongodb s časovým rozsahem

  4. Operátoři MongoDB $gt/$lt s cenami uloženými jako řetězce