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

การแคช Redis แบบไร้เซิร์ฟเวอร์สำหรับ Strapi

การส่งมอบโครงการตรงเวลามักจะหมายความว่าคุณจำเป็นต้องใช้เทคโนโลยีที่มีอยู่ให้มากที่สุด ทุกการตัดสินใจของคุณที่นำไปสู่การปรับใช้แบบกำหนดเองจะต้องพิจารณาว่าคุณต้องรักษาโซลูชันของคุณเองด้วย นี่คือเหตุผลที่เครื่องมือโอเพนซอร์สอย่าง Strapi เป็นวิธีในการสร้าง REST API สำหรับโครงการต่อไปของคุณ

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

เร่งความเร็วแบ็กเอนด์ของคุณ

ตอนนี้ Strapi ค่อนข้างรวดเร็วในการตอบกลับเมื่อใช้ SQLite แต่เมื่อข้อมูลและฐานผู้ใช้ของคุณเติบโตขึ้น นี่อาจไม่ใช่ทางออกที่ดีที่สุดในการเริ่มต้น หลังจากที่คุณออกสู่ตลาด คุณอาจมีผู้ใช้หลายพันคนกระจายไปทั่วโลก

ดังนั้น คุณต้องขยายขนาด Strapi ของคุณและในทางกลับกัน การปรับใช้ฐานข้อมูลของคุณเพื่อจัดการกับโหลดทั้งหมดนั้น จะดีกว่าไหมถ้าคุณสามารถเสียบแคชบางประเภทได้

ป้อน REST Cache

แคช Strapi REST คือชุดของปลั๊กอิน Strapi ช่วยให้คุณเพิ่มแคช LRU ลงในแอพ Strapi ของคุณ ลดคำขอฐานข้อมูลจริง

รองรับหน่วยความจำ Couchbase และ Redis และคุณยังสามารถเขียนผู้ให้บริการแบบกำหนดเองได้อีกด้วย ส่วนที่น่าตื่นเต้นที่นี่คือผู้ให้บริการแคช Redis ที่ช่วยให้เราเชื่อมต่อกับ Upstash Redis ได้ในไม่กี่นาที!

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

มาดูกันว่าเราจะทำให้ Strapi เริ่มทำงานกับ Upstash Redis ได้อย่างไร!

ข้อกำหนดเบื้องต้น

สำหรับบทช่วยสอนนี้ คุณต้องมีบัญชี Upstash และการติดตั้ง Node.js คุณต้องใช้ Yarn ซึ่งเป็นตัวจัดการแพ็คเกจที่ต้องการของ Strapi

การสร้างโครงการ Strapi

คุณสามารถไปที่ส่วน "การเพิ่มแคช REST" ได้โดยตรงหากคุณมีโครงการ Strapi อยู่แล้ว ขั้นตอนต่อไปนี้เป็นเพียงการตั้งค่าข้อมูลที่จะใช้งาน

ขั้นตอนแรกคือการสร้างแบ็กเอนด์ใหม่ด้วย Strapi คุณสามารถทำได้โดยใช้คำสั่งต่อไปนี้:

$ npx create-strapi-app@latest strapi-upstash-redis-cache

หลังจากคำสั่งเสร็จสิ้น Strapi จะเปิดเบราว์เซอร์และขอรายละเอียดการเข้าสู่ระบบของผู้ดูแลระบบเพื่อสร้างโมเดลข้อมูลและเนื้อหาแรก

การสร้างแบบจำลองข้อมูลด้วยตัวสร้างประเภทเนื้อหา

หลังจากที่คุณเข้าสู่ระบบ คุณสามารถสร้างโมเดลการรวบรวมข้อมูลครั้งแรกของคุณด้วย Strapi Content-Type Builder รูปที่ 1 แสดงตำแหน่งที่คุณสามารถหา Content-Type Builder ในคอนโซลผู้ดูแลระบบของ Strapi

การแคช Redis แบบไร้เซิร์ฟเวอร์สำหรับ Strapi

คลิกลิงก์ "สร้างประเภทคอลเลกชันใหม่" และสร้างประเภทใหม่ ตั้งชื่อว่า "บทความ" และเพิ่มช่องข้อความธรรมดาสองช่อง ช่องหนึ่งมีไว้สำหรับข้อความสั้นที่เรียกว่า "ชื่อเรื่อง" และอีกช่องหนึ่งสำหรับข้อความยาวที่เรียกว่า "เนื้อหา"

รูปที่ 2 แสดงลักษณะของประเภทก่อนที่จะคลิกปุ่ม “บันทึก”

การแคช Redis แบบไร้เซิร์ฟเวอร์สำหรับ Strapi

หลังจากนั้น เราต้องการอินสแตนซ์ที่แท้จริงของประเภทเนื้อหานั้น

การสร้างเนื้อหาด้วยระบบจัดการเนื้อหา

คุณสามารถดูตำแหน่งของ Content Manager ในรูปที่ 1 ไปที่มันแล้วคลิกปุ่ม "สร้างรายการใหม่" ที่ด้านบนขวา

ในรูปที่ 3 คุณจะเห็น UI รายการเนื้อหาใหม่ อย่าลืมคลิกที่ปุ่ม "บันทึก" และ "เผยแพร่" มิฉะนั้น คุณจะมีแบบร่างส่วนตัวที่ไม่สามารถเข้าถึงได้ผ่าน API สาธารณะ

การแคช Redis แบบไร้เซิร์ฟเวอร์สำหรับ Strapi

การตั้งค่าการอนุญาตสำหรับประเภทเนื้อหา

เรามีประเภทบทความและบทความจริง แต่บุคคลทั่วไปไม่สามารถเข้าถึงได้ ในการเปลี่ยนแปลงนี้ เราต้องอัปเดตบทบาทสาธารณะ รูปที่ 4 แสดงตำแหน่งที่คุณสามารถหาได้ในการนำทาง

การแคช Redis แบบไร้เซิร์ฟเวอร์สำหรับ Strapi

คลิกที่บทบาทสาธารณะจากนั้นคลิกที่การอนุญาต "บทความ" ที่นี่คุณต้องเลือก "find" และ "findOne" แล้วคลิก "Save" ด้วยวิธีนี้ ใครก็ตามที่เปิด API นั้นจะสามารถแสดงรายการบทความทั้งหมดและโหลดบทความหนึ่งบทความได้

เมื่อคุณเปิดแหล่งข้อมูลบทความในเบราว์เซอร์ คุณควรเห็นบทความใหม่ของเรา การตั้งค่าเริ่มต้นของ Strapi ควรให้ทรัพยากรแก่คุณที่ URL ต่อไปนี้:

https://localhost:1337/api/articles

คำตอบควรมีลักษณะดังนี้:

{
  "data": [
    {
      "id": 2,
      "attributes": {
        "title": "My First Article",
        "content": "This is an article!",
        "createdAt": "2022-04-06T15:29:48.104Z",
        "updatedAt": "2022-04-06T15:29:48.949Z",
        "publishedAt": "2022-04-06T15:29:48.948Z"
      }
    }
  ],
  "meta": {
    "pagination": {
      "page": 1,
      "pageSize": 25,
      "pageCount": 1,
      "total": 1
    }
  }
}

การเพิ่มแคช REST

ในที่สุด ส่วนที่น่าตื่นเต้นของการเพิ่มแคชด้วย Upstash Redis!

ในการดำเนินการนี้ คุณต้องติดตั้งสามแพ็คเกจก่อน

yarn add strapi-plugin-redis \
strapi-plugin-rest-cache \
strapi-provider-rest-cache-redis

แพ็คเกจทั้งสามนี้จะช่วยให้ Strapi ส่งข้อมูลไปยังฐานข้อมูล Upstash Redis ของคุณได้

การสร้างฐานข้อมูล Upstash Redis

ในการกำหนดค่าแคชอย่างถูกต้อง เราจำเป็นต้องมี URL ไปยังอินสแตนซ์ Redis สำหรับสิ่งนี้ เราต้องสร้างฐานข้อมูล Upstash Redis ดังนั้นให้เปิด Upstash Console ในเบราว์เซอร์ของคุณแล้วคลิกปุ่ม “สร้างฐานข้อมูล”

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

การแคช Redis แบบไร้เซิร์ฟเวอร์สำหรับ Strapi

การกำหนดค่าแคช REST

ในการกำหนดค่าแคช REST คุณต้องสร้างไฟล์ที่ config/plugins.js โดยมีเนื้อหาดังต่อไปนี้:

config/plugins.js
module.exports = {
  redis: {
    config: {
      connections: {
        default: { connection: "REDIS_URL" },
      },
    },
  },
  "rest-cache": {
    config: {
      provider: { name: "redis" },
      strategy: {
        contentTypes: [{ contentType: "api::article.article", hitpass: false }],
        //debug: true,
      },
    },
  },
};

ใน redis เรากำหนดค่าการเชื่อมต่อกับฐานข้อมูล Upstash Redis URL จากขั้นตอนก่อนหน้านี้มีข้อมูลรับรองทั้งหมดที่ Strapi ต้องการ

ในฟิลด์ rest-cache เราบอกแคชว่าผู้ให้บริการควรใช้และประเภทเนื้อหาใดที่ควรแคช ในกรณีของเรา เป็นเพียงประเภทเนื้อหาบทความเท่านั้น hitpass: false ตรวจสอบให้แน่ใจว่าเนื้อหาถูกแคชเสมอ แม้ว่าจะมีการตรวจสอบสิทธิ์บางอย่างเกิดขึ้น

หากคุณยกเลิกการแสดงความคิดเห็น debug: true คุณจะเห็นผลลัพธ์การดีบักบางอย่าง ผลลัพธ์นี้ทำให้ง่ายต่อการดูว่าแคชทำงานหรือไม่

Strapi ใช้ SQLite เป็นค่าเริ่มต้น ซึ่งรันระหว่างดำเนินการบนคอมพิวเตอร์ที่กำลังพัฒนาของคุณ ดังนั้นมันจะเร็วกว่า Upstash Redis ที่ปรับใช้ห่างออกไปหลายกิโลเมตรจากระบบนี้ สิ่งต่างๆ จะดูแตกต่างไปจากเดิมอย่างสิ้นเชิงในสภาพแวดล้อมที่ใช้งานจริงกับเซิร์ฟเวอร์ฐานข้อมูลจริง

การทดสอบแคช

หลังจากที่เรากำหนดค่าทุกอย่างถูกต้องแล้ว เราก็สามารถรีสตาร์ทเซิร์ฟเวอร์การพัฒนาได้:

yarn run develop

เมื่อเซิร์ฟเวอร์เริ่มทำงาน เราสามารถเข้าถึงได้อีกครั้งด้วย URL นี้:

https://localhost:1337/api/articles

ฐานข้อมูลของเราจะให้บริการตามคำขอแรก และ Upstash Redis จะทำสิ่งต่อไปนี้

บทสรุป

การเร่งการปรับใช้ Strapi ใช้เวลาเพียงไม่กี่นาทีเมื่อเราใช้ Upstash Redis Upstash Console ให้ URL แก่เราที่เราสามารถวางลงในการกำหนดค่าได้เลย

ฐานข้อมูล Upstash Redis แรกนั้นฟรีด้วยซ้ำ ดังนั้นลองดูสิ ไม่ต้องใช้บัตรเครดิต!