Rumah > hujung hadapan web > Soal Jawab bahagian hadapan > Cara nodejs menggunakan caching

Cara nodejs menggunakan caching

WBOY
Lepaskan: 2023-05-14 11:01:08
asal
2482 orang telah melayarinya

Dengan pembangunan Internet, aplikasi rangkaian menjadi lebih dan lebih kompleks, dan terdapat lebih banyak permintaan akses. Untuk meningkatkan prestasi aplikasi, caching telah menjadi pilihan penting, dan Node.js, sebagai bahasa JavaScript sebelah pelayan yang pantas, juga menyokong pelbagai cara untuk menggunakan caching. Artikel ini akan memperkenalkan cara Node.js menggunakan caching untuk meningkatkan prestasi aplikasi.

1. Prinsip asas caching

Cache boleh menyimpan beberapa data yang kerap digunakan dalam memori atau cakera Apabila data perlu digunakan, ia boleh diperolehi terus daripada cache, mengurangkan keperluan untuk setiap masa pertanyaan, meningkatkan kelajuan tindak balas sistem. Cache biasanya menyimpan data dalam bentuk pasangan nilai kunci, di mana kuncinya boleh berupa sebarang jenis data dan nilainya boleh berupa rentetan, nombor, objek JavaScript atau jenis data lain.

Dalam Node.js, kita boleh menggunakan modul teras cache untuk mencipta cache kita sendiri. Modul ini menyediakan kaedah berikut:

  • cache.get(key): Dapatkan data yang sepadan dengan nilai kunci yang ditentukan.
  • cache.set(key, value, ttl): Menyimpan nilai yang ditentukan ke dalam cache, menggunakan kunci yang ditentukan sebagai pengecam. ttl mewakili masa untuk hidup (Time To Live in English), iaitu, dalam masa ini, data boleh diakses daripada cache.
  • cache.del(key): Padamkan data yang sepadan dengan nilai kunci yang ditentukan.
  • cache.clear(): Kosongkan semua cache.

Perlu diingat bahawa data yang dicache menggunakan modul caching terbina dalam Node.js hanya boleh dikongsi dalam proses semasa dan tidak boleh dikongsi antara proses. Jika anda perlu mencapai perkongsian antara proses, anda boleh menggunakan modul cache pihak ketiga, seperti Memcached atau Redis.

2. Gunakan modul caching terbina dalam Node.js

Dalam pembangunan sebenar, kita boleh menggunakan modul cache terbina dalam Node.js untuk cache data. Berikut ialah contoh mudah:

const cache = require('cache');
let data = null;

if (cache.get('data')) {
  data = cache.get('data');
} else {
  // 数据库查询操作
  data = db.query('SELECT * FROM users');
  // 将数据存储到缓存中,使用'users'作为键,存活时间为1小时
  cache.set('users', data, 3600);
}

// 使用data数据
Salin selepas log masuk

Dalam contoh di atas, kami mula-mula cuba mendapatkan data daripada cache, dan jika kunci yang sepadan ditemui, kami terus menggunakan data daripada cache. Jika tidak dijumpai, pangkalan data akan ditanya dan data yang ditanya disimpan dalam cache untuk mengurangkan bilangan pertanyaan pangkalan data. Masa kelangsungan data ini ialah 1 jam Selepas tamat tempoh, anda perlu menanya semula pangkalan data dan mengemas kini data dalam cache.

3. Gunakan cache Redis

Selain menggunakan modul cache terbina dalam Node.js, kami juga boleh menggunakan modul cache pihak ketiga, seperti Redis. Redis ialah pangkalan data cache berasaskan memori yang membolehkan caching aplikasi Internet. Berikut ialah contoh penggunaan cache Redis:

const redis = require('redis');
const client = redis.createClient();

let data = null;
client.get('users', (err, result) => {
  if (result) {
    data = result;
  } else {
    // 数据库查询操作
    data = db.query('SELECT * FROM users');
    // 将数据存储到Redis中,使用'users'作为键,存活时间为1小时
    client.setex('users', 3600, JSON.stringify(data));
  }
});

// 使用data数据
Salin selepas log masuk

Dalam contoh di atas, kami menggunakan kaedah get Redis untuk mendapatkan data Jika kunci yang sepadan ditemui, data dalam cache digunakan secara langsung. Jika tidak ditemui, tanya pangkalan data dan simpan data yang ditanya dalam Redis untuk mengurangkan bilangan pertanyaan pangkalan data. Masa kelangsungan data ini ialah 1 jam Selepas tamat tempoh, anda perlu menanya semula pangkalan data dan mengemas kini data dalam Redis.

4. Pemprosesan ketidaksahihan cache

Data cache sentiasa kekal sama semasa masa hidup, tetapi apabila data cache tamat tempoh, pangkalan data perlu disoal semula dan data dalam cache perlu dikemas kini. Untuk memastikan sifat masa nyata data, kami boleh menggunakan pemasa untuk mengosongkan data yang telah tamat tempoh secara kerap dalam cache. Sebagai contoh, bersihkan cache setiap 5 minit:

setInterval(() => {
  cache.clear();
}, 300000);
Salin selepas log masuk

Dalam contoh di atas, kami menggunakan kaedah setInterval untuk mengosongkan data tamat tempoh secara kerap dalam cache Selang masa ialah 5 minit, iaitu dibersihkan setiap 5 minit.

5. Strategi caching

Terdapat beberapa strategi caching yang perlu dipertimbangkan apabila menggunakan cache untuk meningkatkan prestasi aplikasi.

  1. Strategi penghapusan cache

Strategi penghapusan cache bermakna selepas cache mencapai saiz tertentu atau masa kelangsungan hidup mencapai tempoh tertentu, beberapa strategi penghapusan perlu diguna pakai untuk bersihkan data dalam cache. Strategi penghapusan biasa ialah:

  • FIFO (masuk dahulu, keluar dahulu): mengosongkan data yang mula-mula memasuki cache.
  • LIFO (masuk terakhir, keluar dahulu): Kosongkan data terakhir yang memasuki cache.
  • LFU (Paling Kurang Digunakan): Kosongkan data dengan penggunaan paling sedikit.
  • LRU (terbaru tidak digunakan): Kosongkan data yang tidak digunakan baru-baru ini.

Dalam pembangunan sebenar, strategi penyingkiran yang berbeza boleh diguna pakai mengikut senario aplikasi tertentu untuk meningkatkan kecekapan cache.

  1. Strategi kemas kini cache

Strategi kemas kini cache merujuk kepada cara memastikan data dalam cache kekal disegerakkan dengan data dalam pangkalan data apabila data dalam pangkalan data dikemas kini. Strategi kemas kini cache biasa ialah:

  • Cache-Aside: Apabila kami perlu membaca sekeping data, kami mula-mula mencarinya dari cache, dan jika ditemui, kembalikannya terus, jika tidak, kami menanyakannya daripada pangkalan data dan menyimpan data yang ditanya dalam cache masuk dan kembalikan data. Apabila kami perlu mengemas kini data, kami mula-mula mengemas kini data dalam pangkalan data, dan kemudian memadam data daripada cache Apabila kami membaca data sekali lagi, kami akan membacanya dari pangkalan data sekali lagi dan mengemas kini data dalam cache.
  • Write-Through (cache tulis-melalui): Apabila kami perlu memasukkan atau mengemas kini sekeping data, kami mula-mula mengemas kini data dalam pangkalan data, dan kemudian menyimpan data dalam cache. Apabila kami perlu membaca sekeping data, kami mula-mula mencarinya dari cache, dan mengembalikannya secara langsung jika ia ditemui Jika tidak, kami menanyakannya daripada pangkalan data, menyimpan data yang ditanya dalam cache dan mengembalikan data. Apabila data perlu dipadamkan, kami mula-mula memadam data dalam pangkalan data dan kemudian memadam data daripada cache.

Dalam pembangunan sebenar, strategi kemas kini cache yang berbeza boleh diguna pakai mengikut senario aplikasi tertentu untuk memastikan ketekalan data antara cache dan pangkalan data.

6. Ringkasan

Caching ialah salah satu cara penting untuk meningkatkan prestasi aplikasi. Dalam Node.js, kita boleh menggunakan modul cache terbina dalam untuk melaksanakan caching atau kita boleh menggunakan modul caching pihak ketiga, seperti Redis. Apabila menggunakan cache, anda perlu mempertimbangkan strategi penyingkiran cache dan strategi kemas kini cache untuk meningkatkan kecekapan cache dan ketekalan data. Walaupun caching boleh meningkatkan prestasi aplikasi, terdapat juga keselamatan cache dan kos pengurusan yang perlu diberi perhatian.

Atas ialah kandungan terperinci Cara nodejs menggunakan caching. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan