Fly.io là một nền tảng tuyệt vời, nơi bạn có thể phân phối ứng dụng của mình trên toàn cầu. Khi ứng dụng của bạn toàn cầu, dữ liệu của bạn cần phải toàn cầu. Bạn có thể chạy Redis không thường xuyên dưới dạng ứng dụng Fly.io nhưng vấn đề là nó nằm ở một khu vực duy nhất. Mặt khác, Cơ sở dữ liệu Upstash RedisGlobal hoàn toàn phù hợp với Fly.io vì nó được nhân rộng trên toàn cầu. Hơn nữa, nhờ SDK dựa trên REST, nó không có bất kỳ sự cố kết nối nào trong thời gian chạy không trạng thái.
Trong bài viết này, tôi sẽ tạo một ứng dụng Node.js cơ bản để truy cập vàoUpstash Redis và triển khai nó trên nền tảng Fly.io.
Thiết lập Fly.io
- Tạo tài khoản Fly.io.
- Cài đặt flyctl andrun
flyctl auth login
Thiết lập Upstash Redis
- Tạo một Cơ sở dữ liệu Toàn cầu miễn phí trên Bảng điều khiển Upstash
- Sao chép REST_URL và REST_TOKEN, bạn sẽ sử dụng chúng trong bước tiếp theo.
Mã ứng dụng
- Sao chép hello worldapp:
git clone https://github.com/fly-apps/hellonode-builtin
- Cài đặt phần phụ thuộc:
npm install express @upstash/redis
- Cập nhật server.js và thay thế
url
vàtoken
:
const express = require("express");
const app = express();
const port = process.env.PORT || 3000;
const { Redis } = require("@upstash/redis");
const redis = new Redis({
url: "REPLACE_HERE",
token: "REPLACE_HERE",
});
app.get(["/", "/:name"], async (req, res) => {
let greeting = "<h1>Hello From Node on Fly!</h1>";
if (req.url !== "/favicon.ico") {
const data = await redis.incr("count");
res.send(greeting + "</br> Counter: " + data);
} else {
res.send("");
}
});
app.listen(port, () => console.log(`HelloNode app listening on port ${port}!`));
Chạy và Triển khai
-
Chạy ứng dụng cục bộ:
node server.js
-
Khởi chạy và triển khai để khởi chạy fly.io:
flyctl launch
-
Bạn có thể triển khai lại ứng dụng của mình với
flyctl deploy
-
Xem url ứng dụng của bạn với
flyctl status
-
Bạn cũng có thể kiểm tra ứng dụng của mình từ bảng điều khiển fly.io:
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 trên nền tảng Fly.ioapplication.
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.