Cara menggunakan Redis dan TypeScript untuk membangunkan fungsi pertahanan penembusan cache
Penembusan cache bermakna apabila pengguna menanyakan data yang tidak wujud, kerana tiada data yang sepadan dalam cache, pangkalan data akan diakses terus setiap kali , menyebabkan pangkalan data menjadi Terlalu banyak tekanan. Untuk menyelesaikan masalah ini, kita boleh menggunakan Redis dan TypeScript untuk membangunkan fungsi pertahanan penembusan cache.
1. Pasang dan konfigurasikan Redis
Pertama, kita perlu memasang Redis dan mengkonfigurasinya. Pada sistem Ubuntu, Redis boleh dipasang melalui arahan berikut:
sudo apt-get install redis-server
Selepas pemasangan, Redis akan berjalan dalam mod tempatan dan mendengar port lalai 6379 secara lalai. Kemudian, kita perlu mengkonfigurasi beberapa parameter Redis untuk digunakan.
Dalam fail konfigurasi Redis, cari konfigurasi berikut dan nyahkomennya:
# bind 127.0.0.1 ::1
Ubah suai kepada:
bind 0.0.0.0
Dengan cara ini, Redis akan dapat mendengar pada alamat IP selain daripada setempat.
Simpan dan keluar dari fail konfigurasi, dan kemudian mulakan semula perkhidmatan Redis:
sudo service redis-server restart
2. Pasang dan konfigurasikan TypeScript
Seterusnya, kita perlu memasang dan mengkonfigurasi TypeScript. Mula-mula, pastikan anda memasang Node.js dan npm.
Kemudian, pasang TypeScript secara global melalui arahan berikut:
npm install -g typescript
Buat projek TypeScript baharu dan mulakan npm:
mkdir cache-protection cd cache-protection npm init -y
Pasang dependensi TypeScript yang diperlukan:
npm install redis ioredis express npm install --save-dev @types/redis @types/ioredis @types/express
3. Tulis kod
Next, kita mula menulis cache. Kod untuk menembusi fungsi pertahanan. Mula-mula, buat fail bernama index.ts dalam direktori akar projek.
import express, { Request, Response } from 'express'; import Redis from 'ioredis'; const app = express(); const redis = new Redis(); // 缓存查询的函数 async function getDataFromCache(key: string): Promise<string | null> { return await redis.get(key); } // 从数据库查询数据的函数 async function getDataFromDb(key: string): Promise<string | undefined> { // 模拟从数据库查询的过程 const dataFromDb = { '1': 'data1', '2': 'data2', '3': 'data3', }; return dataFromDb[key]; } // 将数据写入缓存的函数 async function setDataToCache(key: string, data: string): Promise<string> { return await redis.set(key, data); } // Express路由处理函数 app.get('/data/:id', async (req: Request, res: Response) => { const dataId = req.params.id; const cacheKey = `data:${dataId}`; // 尝试从缓存中获取数据 let data = await getDataFromCache(cacheKey); // 如果缓存中没有数据,则从数据库中查询并写入缓存 if (!data) { data = await getDataFromDb(dataId); if (data) { await setDataToCache(cacheKey, data); } } // 返回结果 if (data) { res.send(data); } else { res.send('Data not found'); } }); // 启动Express服务 app.listen(3000, () => { console.log('Server is running on port 3000'); });
Perihalan kod:
4 Jalankan kod
Dalam baris arahan, gunakan arahan berikut untuk menyusun kod TypeScript ke dalam JavaScript:
tsc index.ts
Kemudian, jalankan kod JavaScript yang disusun:
node index.js
Sekarang, anda boleh mengaksesnya dengan melawati http ://localhost :3000/data/1 untuk menguji fungsi pertahanan penembusan cache. Akses pertama akan mengambil data daripada pangkalan data dan menulis data ke cache. Mengakses URL yang sama sekali lagi akan mengambil data terus daripada cache.
Ringkasan:
Artikel ini memperkenalkan cara menggunakan Redis dan TypeScript untuk membangunkan fungsi pertahanan penembusan cache. Melalui gabungan fungsi pertanyaan cache, fungsi pertanyaan data daripada pangkalan data, dan fungsi cache penulisan data, kami boleh mengurangkan akses kepada pangkalan data dan meningkatkan prestasi sistem dengan berkesan. Pada masa yang sama, ciri membaca dan menulis berkelajuan tinggi Redis dapat mengatasi situasi capaian serentak yang tinggi dengan lebih baik.
Saya harap artikel ini dapat membantu kerja pembangunan anda!
Atas ialah kandungan terperinci Cara menggunakan Redis dan TypeScript untuk membangunkan fungsi pertahanan penembusan cache. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!