Gần đây, Netlifyan đã công bố Edge Functions, nơi bạn có thể chạy mã của mình tại các vị trí biên trên thời gian chạy Deno với tần suất thấp trên toàn cầu. Trong bài đăng này, chúng tôi sẽ xây dựng một ứng dụng đơn giản chạy Netlify Edgefunctions và truy cập Upstash Redis như một kho lưu trữ dữ liệu. Upstash Redis là một bản phù hợp hoàn hảo cho các Chức năng của Netlify Edge vì:
- Upstash Redis có loại cơ sở dữ liệu Toàn cầu, nơi các bản sao của Redis được phân phối trên toàn thế giới. Vì vậy, chức năng cạnh của bạn sẽ truy cập vào khu vực gần nhất với độ trễ thấp.
- Upstash Redis có API và SDK REST tích hợp sẵn, không có bất kỳ sự cố kết nối nào thường gặp trong thời gian chạy không máy chủ.
- Upstash Redis có SDK JS được xây dựng và thử nghiệm với thời gian chạy Deno
Thiết lập dự án
Bạn có thể kiểm tra màn hình đầu tiên này nếu bạn muốn bỏ qua các bước bên dưới.
Tạo một dự án Node trống (npm init
) và tạo hello.js
trong netlify>edge-functions
như bên dưới:
import { Redis } from "https://deno.land/x/[email protected]/mod.ts";
export default async () => {
const redis = Redis.fromEnv();
const counter = await redis.incr("edge_counter");
return new Response(counter);
};
Tạo tệp netlify.toml trong thư mục dự án của bạn
netlify.toml[[edge_functions]]
path = "/test"
function = "hello"
Tạo .env
tệp trong thư mục dự án của bạn
UPSTASH_REDIS_REST_URL=
UPSTASH_REDIS_REST_TOKEN=
Bây giờ, tạo cơ sở dữ liệu Redis từ Upstash Console. Chọn Tập dữ liệu chung để giảm thiểu độ trễ từ các chức năng cạnh của bạn. Sao chép REST_URL vàREST_TOKEN từ trang tổng quan Upstash và dán vào .env
.
Kiểm tra và Triển khai
Bạn có thể chạy ứng dụng cục bộ qua:netlify dev
và kiểm tra https://localhost:8888/test
Ngoài ra, bạn có thể triển khai ứng dụng của mình bằng cách sử dụng trang tổng quan Netlify. Bạn cần thiết lập Upstash URL và Mã thông báo làm biến môi trường trong Netlify.
Các từ đóng
Trong bài viết này, chúng tôi đã giới thiệu cách sử dụng Upstash Redis trong Netlify EdgeFunctions.
Vui lòng liên hệ với chúng tôi trên GitHub, Discordand Twitter nếu có bất kỳ vấn đề hoặc nhận xét nào.