Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Redis

การสร้างแคช Redis สำหรับ Express.js:คำแนะนำทีละขั้นตอน

บทความนี้จะให้ตัวอย่างแอปพลิเคชันที่ใช้ Redis Cache พร้อมคำอธิบาย

โปรดดูบทความนี้เกี่ยวกับวิธีสร้างแอปพลิเคชัน Express Node JS เพื่อให้เราสามารถเข้าสู่หัวข้อได้อย่างรวดเร็วโดยไม่ชักช้า

เหตุใดจึงต้องมีการแคช

เมื่อจำเป็นต้องตอบสนองเดียวกันหลายครั้ง ให้จัดเก็บข้อมูลไว้ในหน่วยความจำเซิร์ฟเวอร์แบบกระจายและสามารถดึงข้อมูลได้เร็วกว่าข้อมูลที่ดึงมาจากชั้นพื้นที่จัดเก็บข้อมูลสำหรับการโทรแต่ละครั้ง การแคชคือความสามารถของแอปพลิเคชันในการทำซ้ำค่าตามระยะเวลาที่กำหนดและให้บริการตามคำขอของเว็บทันที

เทคนิคเหล่านี้จะมีผลเมื่อ

  • มีความจำเป็นต้องเรียกใช้ API ของบุคคลที่สามและจำนวนการโทร
  • ต้นทุนการถ่ายโอนข้อมูลระหว่างคลาวด์และเซิร์ฟเวอร์
  • การตอบสนองของเซิร์ฟเวอร์มีความสำคัญตามคำขอที่เกิดขึ้นพร้อมกัน

แคช Redis คืออะไร

แคชข้อมูลที่จัดเก็บไว้ในระบบกระจายแบบรวมศูนย์ เช่น Redis Redis เรียกอีกอย่างว่าเซิร์ฟเวอร์โครงสร้างข้อมูล ซึ่งหมายความว่ากระบวนการต่างๆ สามารถสืบค้นและแก้ไขข้อมูลได้พร้อมๆ กันโดยไม่ต้องใช้เวลาโหลดมากนัก

ข้อดีของ Redis

คุณสมบัติพิเศษของโครงสร้างข้อมูลคือ

  • แม้ว่าข้อมูลจะถูกร้องขอ ให้บริการ และแก้ไขบ่อยครั้ง แต่ข้อมูลจะถูกจัดเก็บไว้ในดิสก์แทนที่จะจัดเก็บไว้ใน RAM
  • ต่างจากภาษาการเขียนโปรแกรมระดับสูง การใช้งานจะเน้นไปที่การใช้หน่วยความจำให้เกิดประโยชน์สูงสุด
  • ยังมีฟีเจอร์ต่างๆ เช่น การจำลอง ระดับความคงทน การทำคลัสเตอร์ และความพร้อมใช้งานสูง (HA)
  • Redis สามารถจัดการการดำเนินการ Memcached ที่ซับซ้อนได้ เช่น รายการ ชุด ชุดข้อมูลที่เรียงลำดับ ฯลฯ

การใช้ไคลเอนต์ Redis ในระบบโลคัล

หากต้องการใช้ Redis คุณต้องติดตั้ง Node JS Redis Client ในระบบโลคัล คุณสามารถดาวน์โหลดไฟล์ msi (เวอร์ชันเสถียร v3.0.504 ณ วันที่เผยแพร่บทความนี้) ได้จาก Github และดำเนินการตามขั้นตอนการติดตั้งตามปกติ (สำหรับ Windows OS)

Redis Client ล่าสุดสามารถติดตั้งกับ Windows Subsystem for Linux (WSL) และติดตั้ง Redis เวอร์ชัน 6.x ได้ด้วย นอกจากนี้ สำหรับการเชื่อมต่อ Mac และ Linux OS ให้ทำตามคำแนะนำในการดาวน์โหลด

เรียกใช้ไคลเอนต์ Redis ด้วยคำสั่งต่อไปนี้

redis-server

การสร้างแคช Redis สำหรับ Express.js:คำแนะนำทีละขั้นตอน

สร้างแอปพลิเคชัน Express Node JS

เปิดหน้าต่างพรอมต์ PowerShell หรือ cmd และไปที่โฟลเดอร์ปลายทาง

ดำเนินการคำสั่งต่อไปนี้

npx express expressRedisCaching –hbs

การสร้างแคช Redis สำหรับ Express.js:คำแนะนำทีละขั้นตอน

ติดตั้งโมดูลโดยใช้คำสั่ง

npm i

และติดตั้งแพ็คเกจเพิ่มเติมต่อไปนี้

npm i redis
npm i isomorphic-fetch

เมื่อติดตั้งแพ็คเกจทั้งหมดแล้วและพร้อมที่จะเริ่มต้น ฉันได้สร้างหน้าเส้นทางใหม่ชื่อ “getCached.js ” และแมปใน “App.js ” หน้า

app.use('/getCached', require('./routes/getCached'));

เมื่อเรียกตำแหน่งข้อมูล ตรรกะคือการดึงการตอบสนองจากไซต์ตัวยึดตำแหน่ง JSON (จำลอง API) จัดเก็บข้อมูลใน Redis Cache และตอบสนองต่อคำขอ เมื่อมีการร้องขอเพิ่มเติม ข้อมูลแคชจะถูกให้บริการ

const express = require('express')
require('isomorphic-fetch')
const redis = require('redis')
const router = express.Router()
const client = redis.createClient({
    host:'127.0.0.1',
    port:6379
})
let sourceURL = 'https://jsonplaceholder.typicode.com/todos';
router.get('/',async(req, res)=>{  
        await client.connect();
        const value = await client.get('todos');
        if(value){
            console.log("from cached data")
            res.send(JSON.parse(value))
        }
        else{
            const resp = await fetch(sourceURL)
               .then((response) => response.json());
            await client.set('todos', JSON.stringify(resp));
            console.log("from source data")
            res.send(resp);
        }
        await client.disconnect();
})
module.exports = router

วัตถุที่สร้างขึ้นโดยใช้ Redis คือ

redis.createClient({ host:’127.0.0.1’, port:6379});

พร้อมตัวเลือก

โฮสต์ :ปัจจุบัน Redis พร้อมใช้งานในระบบโลคัล ดังนั้นโฮสต์จึงเป็นค่าเริ่มต้น 127.0.0.1

พอร์ต :โดยค่าเริ่มต้น Windows OS จะจัดสรรพอร์ต 6379 ให้กับ Redis แต่สามารถปรับแต่งได้เหมือนกัน

ตอนนี้ได้เวลาเรียกใช้แอปโดยดำเนินการคำสั่ง

npm start

การสร้างแคช Redis สำหรับ Express.js:คำแนะนำทีละขั้นตอน

การสร้างแคช Redis สำหรับ Express.js:คำแนะนำทีละขั้นตอน

ในการเข้าถึงครั้งแรก ข้อมูลจะถูกดึงมาจาก API ต้นทางด้วยเวลาตอบสนองประมาณ 1156 มิลลิวินาที และเช่นเดียวกันนี้จะถูกจัดเก็บไว้ใน Redis Cache ที่จัดเก็บข้อมูลในหน่วยความจำ การโจมตีครั้งที่สองได้รับข้อมูลจากแคช โดยมีการลดเวลาในการดึงข้อมูลลงอย่างมากเพียง ~10 ms หรือ ~ 6ms

ดังนั้น จึงบรรลุวัตถุประสงค์ได้ด้วยขั้นตอนง่ายๆ เพียงไม่กี่ขั้นตอน