Strategi Caching (Redis)
Laksanakan pelbagai strategi caching menggunakan Redis untuk mengurangkan beban pangkalan data dan meningkatkan masa respons API.
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-managerKemudian, 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, nilaittllalai daripadaCacheModule.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.
CacheModuleNestJS memudahkan penyepaduan Redis menggunakancache-manager-redis-store.- Anda boleh menggunakan
@CacheInterceptorbersama@CacheKeydan@CacheTTLuntuk pencachean automatik pada kaedah pengawal. - Untuk kawalan yang lebih terperinci, suntik
CACHE_MANAGERbagi 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!
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
- Strategi Caching (Redis)
- Pemantauan Prestasi Pangkalan Data
- Pengimbangan Beban dan Proksi
- Strategi Pengoptimuman Pertanyaan
- Penggunaan Tanpa Pelayan
- Menskalakan Projek Supabase Anda