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

ใช้ Redis ในการคำนวณอย่างรวดเร็ว

  • ตัวอย่างนี้ใช้ Fastly CLI เวอร์ชันเก่า ตรวจสอบบทความนี้สำหรับเวอร์ชันล่าสุด

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

แรงจูงใจ

Edge Computing เป็นหนึ่งในแนวโน้มที่น่าตื่นเต้นที่สุดในช่วงไม่กี่ปีที่ผ่านมา บริการ CDN เช่น Cloudflare และ Fastly เริ่มให้ผู้ใช้เรียกใช้แอปพลิเคชันของตนบนโครงสร้างพื้นฐานขอบของตนได้ ซึ่งช่วยให้นักพัฒนาสร้างแอปพลิเคชันที่เผยแพร่ทั่วโลกและมีประสิทธิภาพสูง

Compute@Edge เป็นแพลตฟอร์มไร้เซิร์ฟเวอร์จาก Fastly คุณสามารถเขียนโค้ดของคุณใน Rust, AssemblyScript, Javascript และรันในเครือข่าย Edge ของ Fastly ฟังก์ชัน Fastly Compute เป็นแบบไร้สัญชาติ ซึ่งหมายความว่านักพัฒนาควรเก็บสถานะแอปพลิเคชันของตนไว้ที่ที่จัดเก็บข้อมูลภายนอก แต่ Fastly ใช้ WebAssembly เป็นรันไทม์สำหรับฟังก์ชันต่างๆ และไม่อนุญาตให้มีการเชื่อมต่อ TCP Upstash Redis เป็นโซลูชันที่สมบูรณ์แบบสำหรับฟังก์ชัน Fastly Compute ด้วย REST API, การจำลองแบบทั่วโลก และการกำหนดราคาแบบไร้เซิร์ฟเวอร์

ดูโค้ดและตัวอย่าง

การตั้งค่าโครงการ

สร้างฐานข้อมูลใน Upstash Console ต้องการ Global Database สำหรับเวลาแฝงต่ำจากตำแหน่งขอบ

ติดตั้งอย่างรวดเร็ว cli:

brew install fastly/tap/fastly

กำหนดค่า CLI ของคุณด้วยบัญชี Fastly:

fastly configure

สร้างโฟลเดอร์และเริ่มต้นโครงการของคุณโดยเรียกใช้ fastly compute init ภายในโฟลเดอร์:

➜  using-fastly-compute git:(master) ✗ fastly compute init

Creating a new Compute@Edge project.

Press ^C at any time to quit.

Name: [using-fastly-compute]

Description:

Author: [enes@upstash.com]

Language:

[1] Rust
[2] AssemblyScript (beta)
[3] JavaScript (beta)
[4] Other ('bring your own' Wasm binary)

Choose option: [1] 3

Starter kit:
[1] Default starter for JavaScript
    A basic starter kit that demonstrates routing, simple synthetic responses and
    overriding caching rules.
    https://github.com/fastly/compute-starter-kit-javascript-default
Choose option or paste git URL: [1]

✓ Initializing...
✓ Fetching package template...
✓ Updating package manifest...
✓ Initializing package...

Initialized package using-fastly-compute to:

	/Users/enes/dev/examples/using-fastly-compute

To publish the package (build and deploy), run:
	fastly compute publish
To learn about deploying Compute@Edge projects using third-party orchestration tools, visit:
	https://developer.fastly.com/learning/integrations/orchestration/
SUCCESS: Initialized package using-fastly-compute

ติดตั้ง upstash-redis และ flight-path:

npm install @upstash/redis flight-path

อัปเดต webpack.config.js ของคุณโดยเพิ่มปลั๊กอินเหล่านี้:

plugins: [
    // Polyfills go here.
    // Used for, e.g., any cross-platform WHATWG,
    // or core nodejs modules needed for your application.
    new webpack.ProvidePlugin({
        URL: "core-js/web/url",
    }),
],

อัปเดตไฟล์ fastly.toml ของคุณ:

authors = ["enes@upstash.com"]
description = "Example of using Upstash with Fastly Compute@Edge"
language = "javascript"
manifest_version = 2
name = "fastly-upstash"
service_id = "PASTE_YOUR_SERVICE_ID"

[local_server.backends.upstash-db]
url = "https://eu1-liberal-cat-30162.upstash.io"

คุณต้องสร้าง Fastly Compute Service และวาง Fastly Service Id ด้านบน

ใช้ Redis ในการคำนวณอย่างรวดเร็ว

นอกจากนี้ คุณต้องเพิ่ม Upstash REST URL เป็นแบ็กเอนด์ใน Fastly Compute Service ของคุณ Fastly Compute ต้องการการเชื่อมต่อเครือข่ายภายนอกเพื่อลงทะเบียนเป็นแบ็กเอนด์ ในหน้าจอบริการ ให้คลิก Edit Configuration> Clone version x to edit> Origins> Create a host

หลังจากเพิ่มโฮสต์แล้ว คลิกเพื่อแก้ไขไอคอนเพื่อเพิ่มชื่อโฮสต์ ตั้งชื่อเป็น upstash-db ซึ่งจะเท่ากับ backend ตัวเลือกในขณะที่เรากำลังกำหนดค่าไคลเอนต์ upstash-redis ลบ https:// ส่วนหนึ่งจาก url สุดท้ายคลิกที่ Activate ปุ่มที่มุมบนขวาเพื่อเปิดใช้งานการกำหนดค่าด้วยการปรับใช้ปัจจุบัน

ใช้ Redis ในการคำนวณอย่างรวดเร็ว

Local_server.backends.upstash-db จำเป็นสำหรับคุณในการเรียกใช้ฟังก์ชันของคุณในเครื่อง แทนที่ url ด้วย REST url ของ Upstash Database ของคุณ

การนำไปใช้

src/index.js คือการนำฟังก์ชันแบบไร้เซิร์ฟเวอร์ไปใช้งาน แก้ไขโค้ดดังนี้:

import { Router } from "flight-path";
import { Redis } from "@upstash/redis/fastly";

const router = new Router();

const redis = new Redis({
  url: "PASTE_YOUR_UPSTASH_REST_URL",
  token: "PASTE_YOUR_UPSTASH_TOKEN",
  backend: "upstash-db",
});

router.get("/", async (req, res) => {
  const count = await redis.incr("count");
  res.send(`Fastly with Upstash! Count: ${count}`);
});

router.listen();

คุณต้องคัดลอกและวาง REST URL และโทเค็นจากคอนโซล Upstash

เราเพียงแค่เชื่อมต่อกับ Upstash โดยใช้ไคลเอนต์ upstash-redis เราเพิ่มตัวนับและส่งคืนการตอบกลับ

โปรดทราบว่าคุณไม่สามารถใช้ไคลเอ็นต์ Redis อื่นได้เนื่องจากใช้การเชื่อมต่อ TCP ซึ่ง Fastly Compute ไม่รองรับ

ขณะตรวจสอบสิทธิ์ด้วย auth() คุณต้องเพิ่ม backend: upstash-db เป็นตัวเลือกคำขอพิเศษ สิ่งนี้จำเป็นเนื่องจาก Fastly Compute ต้องการการเชื่อมต่อเครือข่ายภายนอกใดๆ เพื่อลงทะเบียนเป็นแบ็กเอนด์

เรียกใช้ในเครื่อง

คุณสามารถเรียกใช้ฟังก์ชันในเครื่องได้โดย:

fastly compute serve

สร้างและปรับใช้

สร้างและปรับใช้ฟังก์ชันของคุณด้วย:

fastly compute publish

แอปพลิเคชันของคุณจะถูกสร้างและปรับใช้โดย Fastly คำสั่งจะบันทึก URL เพื่อให้คุณสามารถทดสอบว่าใช้งานได้หรือไม่:

https://horribly-organic-spider.edgecompute.app

ปิดคำ

ในบทความนี้ เราได้สร้างแอปพลิเคชันที่เรียบง่ายซึ่งทำงานบน Fastly Compute ที่ Edge โดยใช้ Upstash เราชอบที่จะปรับปรุง Upstash และเนื้อหาของเราตามความคิดเห็นของคุณ แจ้งให้เราทราบความคิดเห็นของคุณบน Twitter หรือ Discord

https://developer.fastly.com/learning/compute/

https://developer.fastly.com/learning/compute/javascript/