Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Tìm hiểu về bộ nhớ đệm Laravel:Bộ nhớ đệm mặt tiền và Redis

Phổ biến:

Chúng là tất cả bộ nhớ cache .

Tất cả chúng đều được sử dụng để giảm chi phí thời gian .

Mạng vi phân:

Cấu hình và lộ trình:

Nó thuộc về ứng dụng . Chúng tôi gọi nó là Bộ đệm ứng dụng .

php artisan config:cache
php artisan route:cache

Hai lệnh này là các định tuyến và cấu hình bộ nhớ đệm.

PATH:

Chúng luôn được lưu trữ trong bootstrap/cache/

Đang chạy

php artisan config:clear
php artisan route:clear

Chỉ xóa các thư mục và tệp trong bootstrap/cache/ .

Chúng tĩnh . Vì vậy, chúng chỉ được thay đổi khi bạn thay đổi chúng.

Benifit

Nếu bạn thay đổi chúng, bạn cần phải clearcache chúng theo cách thủ công.

Sau khi bạn xác định các tuyến đường và cấu hình này.

Laravel không cần đọc lại các cấu hình và tuyến đường từ tệp tốn thời gian IO.

Bộ đệm ẩn hệ thống tập tin và bộ nhớ đệm Redis:

Bộ nhớ cache của hệ thống tệp và bộ nhớ cache của Redis cũng là bộ nhớ cache.

Tuy nhiên, họ sử dụng trình điều khiển khác nhau để lưu trữ dữ liệu, nghĩa là nơi bạn lưu trữ dữ liệu trong bộ nhớ đệm .

Hệ thống tập tin PATH:Nếu bạn đang sử dụng trình điều khiển hệ thống tập tin. chúng được lưu trữ trong storage/framework/cache/

Reids PATH:Kho dữ liệu trong redis theo khóa-giá trị.

Bạn sử dụng chúng khi nào?

Khi bạn nhận thấy rằng có nhiều yêu cầu đối với mã này để nhận dữ liệu và các dữ liệu này không được thay đổi quá nhanh.

Bạn có thể sử dụng bộ nhớ đệm để lưu trữ chúng và sau đó, lần sau khi có yêu cầu khác tới api này. Bạn chỉ cần lấy dữ liệu từ bộ nhớ đệm. Như bên dưới:

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

Yêu cầu đầu tiên lấy dữ liệu của bài đăng từ cơ sở dữ liệu, sau đó lưu trữ các dữ liệu này trong bộ nhớ đệm (Reids hoặc Hệ thống tệp) đã hết hạn sau 30 giây.

Yêu cầu tiếp theo chỉ nhận dữ liệu của bài đăng thông qua bộ nhớ cache. Họ không cần phải tìm kiếm lại trong cơ sở dữ liệu.

Và cái này:

use Illuminate\Support\Facades\Redis; 

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

Có nghĩa là khi mọi người yêu cầu localhost:8000/ , số lượt truy cập của người dùng tăng lên trong redis (không cần lưu trong cơ sở dữ liệu, tốn nhiều thời gian hơn), lần sau, khi có yêu cầu tìm kiếm số lượt truy cập, bạn có thể tìm thấy nó trong redis rất nhanh.

Tái bút:Ở đây sử dụng Redis Facade, sau đó dữ liệu được lưu trữ trong redis .

Nếu bạn đang sử dụng redis làm trình điều khiển bộ nhớ cache, hãy Cache::remember() cũng sẽ lưu trữ dữ liệu trong redis.

Tuy nhiên, sử dụng Redis Facade, bạn có thể sử dụng nhiều phương pháp redis.

Cái nào tốt hơn?

Tôi nghĩ redis tốt hơn filesystem .

  1. Bởi vì redis lưu trữ dữ liệu trong bộ nhớ và lưu trữ hệ thống tệp trong đĩa. Đọc dữ liệu từ bộ nhớ nhanh hơn hơn đĩa.

  2. Vận hành dữ liệu trong Redis dễ dàng hơn hơn Hệ thống tập tin. Ví dụ:Redis hỗ trợ xóa tất cả bộ nhớ cache cho một thẻ cụ thể, nhưng hệ thống tệp không thể [Vì hệ thống tệp lưu trữ dữ liệu bộ nhớ cache theo tên của khóa được mã hóa].

  3. Đối với đã phân phối máy chủ, bộ nhớ cache của hệ thống tập tin là một ý tưởng tồi. Tỷ lệ truy cập bộ nhớ cache thấp hơn.

Thành thật mà nói, có những trình điều khiển khác có thể được lựa chọn, chẳng hạn như mongodb .

Nhân tiện, tiếng Anh của tôi không tốt lắm, mong bạn thông cảm.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Không chặn Redis pubsub có được không?

  2. Redis ra lệnh thực hiện

  3. Làm cách nào để đặt một cụm redis co giãn làm nô lệ?

  4. Đặt cache_store trong trình khởi tạo

  5. Hỗ trợ Redis trên chỉ mục phụ