API Bahagian Belakang Perusahaan NestJS · Pelajaran

Strategi Caching (Redis)

Laksanakan pelbagai strategi caching menggunakan Redis untuk mengurangkan beban pangkalan data dan meningkatkan masa respons API.

Pelajaran 1 daripada 611 langkah

Strategi Caching (Redis) ialah pelajaran API Bahagian Belakang Perusahaan NestJS percuma di CoddyKit. Ini ialah pelajaran 1 daripada 6. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran API Bahagian Belakang Perusahaan NestJS, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus API Bahagian Belakang Perusahaan NestJS merangkumi sejumlah 6 pelajaran.

Tingkatkan Prestasi API dengan Pencachean

Selamat datang ke Strategi Pencachean dengan Redis! Dalam pelajaran ini, kita akan meneroka cara meningkatkan prestasi dan responsiviti API NestJS anda dengan ketara.

Pencachean ialah teknik yang menyimpan sementara data yang kerap diakses dalam lapisan memori yang lebih pantas. Teknik ini membantu mengelakkan operasi berulang yang mahal seperti pertanyaan pangkalan data atau pengiraan kompleks.

Mengapa Pencachean Penting

Bayangkan titik akhir API yang mendapatkan produk popular. Setiap kali pengguna meminta data ini, pelayan anda mungkin melaksanakan pertanyaan pangkalan data yang boleh menjadi perlahan dan menggunakan banyak sumber.

  • Latensi Berkurangan: Pengguna menerima data dengan lebih pantas.
  • Beban Pangkalan Data Lebih Rendah: Pangkalan data anda bekerja dengan lebih ringan, sekali gus mengelakkan kesesakan.
  • Kebolehskalaan Dipertingkat: Aplikasi anda boleh mengendalikan lebih banyak pengguna tanpa menjadi perlahan.

Pencachean bertindak sebagai penimbal dengan menyampaikan data dengan pantas daripada memori, bukannya sentiasa mengakses sumber data utama.

Kenali Redis: Cache Dalam Memori Anda

Redis (Pelayan Kamus Jauh) ialah stor struktur data dalam memori sumber terbuka yang popular. Ia sering digunakan sebagai pangkalan data, cache dan perantara mesej.

  • Kelajuan: Redis menyimpan data dalam RAM, menjadikan operasi membaca dan menulis sangat pantas.
  • Serba Boleh: Redis menyokong pelbagai struktur data seperti rentetan, cincangan, senarai, set dan banyak lagi.
  • Kekekalan: Walaupun terutamanya berada dalam memori, Redis boleh mengekalkan data pada cakera untuk ketahanan.

Untuk pencachean, kelajuan Redis dan model nilai-kunci yang mudah menjadikannya pilihan yang ideal.

Asas Redis: Operasi Nilai-Kunci

Redis menyimpan data sebagai pasangan nilai-kunci yang mudah. Anda menetapkan kunci unik kepada sekeping data, kemudian menggunakan kunci itu untuk mendapatkannya semula kemudian. Beginilah rupanya secara konsep menggunakan CLI Redis:

# Connect to Redis CLI
redis-cli

# Store a value with a key
SET myapi:users:123 '{"name":"Alice"}'

# Retrieve the value using its key
GET myapi:users:123

# Set a value with an expiration time (10 seconds)
SETEX myapi:temp:data 10 'Expires Soon'

Persediaan CacheModule NestJS

NestJS menyediakan CacheModule yang fleksibel untuk mengintegrasikan pelbagai penyelesaian pencachean. Untuk menggunakan Redis, kita akan memasang @nestjs/cache-manager dan cache-manager-redis-store.

Mula-mula, pasang pakej:

npm install @nestjs/cache-manager cache-manager-redis-store cache-manager

Kemudian, konfigurasikan AppModule anda untuk menggunakan Redis:

import { Module, CacheModule } from '@nestjs/common';
import * as redisStore from 'cache-manager-redis-store';

@Module({
  imports: [
    CacheModule.register({
      store: redisStore,
      host: 'localhost',
      port: 6379,
      ttl: 300 // default time-to-live in seconds
    }),
  ],
  controllers: [],
  providers: [],
})
export class AppModule {}

Pencachean Automatik dengan CacheInterceptor

Untuk titik akhir GET yang mudah, NestJS menyediakan CacheInterceptor. Pencegat ini mencache respons sesuatu kaedah secara automatik dan menyampaikannya daripada cache bagi permintaan seterusnya.

Anda boleh menggunakannya secara global atau pada pengawal/kaedah tertentu menggunakan penghias:

import { Controller, Get, UseInterceptors } from '@nestjs/common';
import { CacheInterceptor, CacheKey, CacheTTL } from '@nestjs/cache-manager';

@Controller('products')
@UseInterceptors(CacheInterceptor) // Apply to all methods in this controller
export class ProductsController {

  @Get()
  @CacheKey('all_products') // Unique key for this cache entry
  @CacheTTL(60) // Cache for 60 seconds (overrides module default)
  async findAll() {
    // In a real app, this would fetch from a database
    console.log('Fetching all products from DB...');
    return [{ id: 1, name: 'Laptop' }, { id: 2, name: 'Mouse' }];
  }
}

Memahami CacheKey dan CacheTTL

Apabila menggunakan CacheInterceptor, dua penghias kunci membantu Anda mengawal pencachean:

  • @CacheKey('your_key_name'): Penghias ini mentakrifkan kunci unik untuk menyimpan data tindak balas dalam Redis. Jika tidak diberikan, NestJS menjana kunci berdasarkan laluan permintaan.
  • @CacheTTL(seconds): Ini menetapkan Jangka Hayat entri cache dalam saat. Selepas tempoh ini, data cache tamat tempoh dan akan diambil semula daripada sumber asal. Jika tidak dinyatakan, nilai ttl lalai daripada CacheModule.register() akan digunakan.

Dengan ini, Anda boleh melaraskan tempoh data tertentu kekal dalam cache dengan lebih terperinci.

Pencachean Manual dengan CacheManager

Kadangkala, Anda memerlukan kawalan yang lebih terperinci daripada yang ditawarkan oleh CacheInterceptor, contohnya mencache sebahagian daripada tindak balas atau membatalkan entri cache secara terprogram.

Anda boleh menyuntik perkhidmatan CacheManager dan menggunakan kaedahnya secara terus:

import { Controller, Get, Post, Inject, Param } from '@nestjs/common';
import { Cache } from 'cache-manager';
import { CACHE_MANAGER } from '@nestjs/cache-manager';

@Controller('users')
export class UsersController {
  constructor(@Inject(CACHE_MANAGER) private cacheManager: Cache) {}

  @Get(':id')
  async findOne(@Param('id') id: string) {
    const cacheKey = `user_${id}`;
    const cachedUser = await this.cacheManager.get(cacheKey);

    if (cachedUser) {
      console.log('Serving from cache!');
      return cachedUser;
    }

    // Simulate fetching from DB
    const user = { id, name: `User ${id}`, email: `user${id}@example.com` };
    await this.cacheManager.set(cacheKey, user, 600); // Cache for 10 mins

    console.log('Serving from DB and caching...');
    return user;
  }

  @Post('clear-all')
  async clearAllCache() {
    await this.cacheManager.reset(); // Clear all cache entries
    return 'Cache cleared!';
  }
}

Strategi Pembatalan Cache

Aspek penting dalam pencachean ialah memastikan data kekal terkini. Data lapuk boleh menyebabkan maklumat yang tidak betul disampaikan.

  • Jangka Hayat (TTL): Strategi paling mudah; data tamat tempoh secara automatik selepas tempoh yang ditetapkan.
  • Cache-Aside: Kod aplikasi mengambil data secara jelas daripada cache, kemudian daripada pangkalan data jika tiada, lalu mengemas kini cache.
  • Write-Through: Data ditulis ke cache dan pangkalan data secara serentak.
  • Write-Back: Data ditulis ke cache, kemudian ditulis ke pangkalan data secara tak segerak.
  • Pembatalan Dipacu Peristiwa: Apabila data dalam pangkalan data berubah, suatu peristiwa dicetuskan untuk membatalkan atau mengemas kini entri cache yang berkaitan.

Pemilihan strategi yang sesuai bergantung pada keperluan ketekalan aplikasi Anda.

Semakan Pantas: Manfaat Pencachean

Pertimbangkan titik akhir API NestJS yang kerap mengambil senarai produk popular daripada pangkalan data. Panggilan pangkalan data ini perlahan kerana cantuman yang kompleks dan jumlah data yang besar.

Pencachean dengan Redis: Imbas Kembali

Syabas! Anda telah mempelajari asas pencachean dengan Redis dalam NestJS:

  • Pencachean meningkatkan prestasi API dengan ketara, mengurangkan beban pangkalan data dan menambah baik kebolehskalaan.
  • Redis ialah pilihan yang sangat baik untuk cache dalam memori kerana kepantasan dan kepelbagaian fungsinya.
  • CacheModule NestJS memudahkan penyepaduan Redis menggunakan cache-manager-redis-store.
  • Anda boleh menggunakan @CacheInterceptor bersama @CacheKey dan @CacheTTL untuk pencachean automatik pada kaedah pengawal.
  • Untuk kawalan yang lebih terperinci, suntik CACHE_MANAGER bagi berinteraksi dengan Redis secara manual.
  • Memahami strategi pembatalan cache amat penting untuk mengekalkan data terkini.

Mula laksanakan pencachean untuk menjadikan aplikasi NestJS Anda sangat pantas!

Percuma untuk bermula

Pelajari TypeScript dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
20
Pelajaran
76

Soalan Lazim

Adakah pelajaran “Strategi Caching (Redis)” percuma?

Ya — teks penuh “Strategi Caching (Redis)” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus API Bahagian Belakang Perusahaan NestJS, tingkat taraf kepada CoddyKit PRO. Kursus API Bahagian Belakang Perusahaan NestJS merangkumi sejumlah 6 pelajaran.

Apakah yang akan saya pelajari dalam “Strategi Caching (Redis)”?

Laksanakan pelbagai strategi caching menggunakan Redis untuk mengurangkan beban pangkalan data dan meningkatkan masa respons API. Anda berlatih API Bahagian Belakang Perusahaan NestJS menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan API Bahagian Belakang Perusahaan NestJS?

Tiada pengalaman terdahulu diperlukan. Pembelajaran API Bahagian Belakang Perusahaan NestJS di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 6.

Berapa lamakah pelajaran “Strategi Caching (Redis)” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran API Bahagian Belakang Perusahaan NestJS ini?

Ya. Setiap pelajaran API Bahagian Belakang Perusahaan NestJS menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Strategi Caching (Redis)
  2. Pemantauan Prestasi Pangkalan Data
  3. Pengimbangan Beban dan Proksi
  4. Strategi Pengoptimuman Pertanyaan
  5. Penggunaan Tanpa Pelayan
  6. Menskalakan Projek Supabase Anda
← Kembali ke API Bahagian Belakang Perusahaan NestJS