Redis
 sql >> база данни >  >> NoSQL >> Redis

Разбиране на кеширането на Laravel:Cache фасада и Redis

Често:

Те са всички кеши .

Всички те се използват занамаляване на разходите за време .

Различно:

Конфигурации и маршрути:

Принадлежи към приложение . Наричаме го Кеш на приложението .

php artisan config:cache
php artisan route:cache

Тези две команди са кеширане на маршрути и конфигурации.

ПЪТ:

Те винаги се съхраняват в bootstrap/cache/

Работи

php artisan config:clear
php artisan route:clear

Изчистете само директориите и файловете в bootstrap/cache/ .

Те са статични . Така че те се променят само когато ги смените.

Полза

Ако ги промените, трябва да clear и cache ги ръчно.

След като кеширате тези маршрути и конфигурации.

Laravel не е необходимо да чете отново конфигурациите и маршрутите от файла което отнема време за IO.

Кеш на файловата система и кеш на Redis:

Кешът на файловата система и кешът на Redis също са кеш.

Те обаче използват различен драйвер да съхранявате данните, означава къде съхранявате кешираните данни .

ПЪТ НА файловата система:Ако използвате драйвер за файлова система. те се съхраняват в storage/framework/cache/

Reids PATH:Данните се съхраняват в redis по ключ-стойност.

Кога ги използвате?

Когато открихте, че има много заявки към този код за получаване на данни. И тези данни не се променят толкова бързо.

Можете да използвате кеша, за да ги съхранявате и след това, следващия път, когато друга заявка към този api. той просто вземе данни от cache.като по-долу:

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

Първата заявка получава данните за публикациите от базата данни и след това съхранява тези данни в кеша (Reids или файлова система) изтече след 30 сек.

Следващата заявка получава данните за публикациите само чрез кеша. Няма нужда да търсят отново в бази данни.

И този:

use Illuminate\Support\Facades\Redis; 

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

Означава, когато хората искат localhost:8000/ , броят на посещенията на потребителите се увеличава в redis (не е необходимо да се съхранява в база данни, струва повече време), следващия път, когато заявката за търсене брои посещения, може да се намери в redis много бързо.

PS:Тук използвайте Redis Facade, след което данните се съхраняват в redis .

Ако използвате redis като драйвер за кеш, Cache::remember() ще съхранява данни и в redis.

Въпреки това, като използвате Redis Facade, можете да използвате много методи на Redis.

Кое е по-добро?

Мисля, че redis е по-добре от filesystem .

  1. Тъй като redis съхранява данни в паметта, а файловата система - на диск. Четенето на данни от паметта е по-бързо отколкото диск.

  2. Работа данните в Redis епо-лесно отколкото файловата система. Например Redis поддържа изчистване на целия кеш за конкретен маркер, но файловата система не може [Защото файловата система съхранява кеш данни чрез името на криптиран ключ].

  3. Заразпространено сървър, кешът на файловата система е лоша идея. По-ниско съотношение на попадане в кеша.

Честно казано, има и други драйвери, които могат да бъдат избрани, като mongodb .

Между другото, английският ми не е много добър, надявам се, че разбирате.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. HSET, ако съществува ключ

  2. Как Redis Streams се справя с използването на цялата налична памет?

  3. Паралелност на Redis INCR

  4. Осигуряване на възел Redis

  5. Уведомления за ключовото пространство на Redis със StackExchange.Redis