Hôm nay, chúng tôi sẽ công bố @upstash/redis
v1.0.0.
@upstash/redis
là ứng dụng Redis không kết nối (dựa trên HTTP) duy nhất được thiết kế cho không máy chủ và tương thích với Cloudflare worker một cách nhanh chóng.
Có gì mới trong v1.0.0?
Phiên bản 1.0.0 là bản viết lại hoàn toàn của thư viện trước đó. Trong số các yêu cầu tính năng lớn nhất mà chúng tôi nhận được là hỗ trợ đường ống và cải thiện an toàn kiểu chữ. Do bản chất của các tính năng mới này v1
không tương thích ngược, tuy nhiên phiên bản cũ hơn sẽ tiếp tục hoạt động vì API REST cơ bản không thay đổi.
Hầu hết các lệnh đều tuân theo cùng một cú pháp mà bạn quen dùng từ Redis như redis.setex("key", 2, "value")
. Đối với những người khác, chẳng hạn như hset
chúng tôi cung cấp một API dễ sử dụng hơn để giảm số lượng (de) tuần tự hóa mà bạn cần tự thực hiện:
await redis.hset("123", {
id: "123",
name: { first: "andreas" },
});
Điều này sẽ được đăng nội bộ thành hset 123 id 123 name {"first":"andreas"}
và được gửi đến Upstash. Lưu ý rằng các đối tượng được tuần tự hóa và bạn không còn phải tự làm điều đó nữa.
Nếu bạn không chắc chắn về cách sử dụng một lệnh, thì typecript sẽ giúp bạn nếu trình soạn thảo của bạn hỗ trợ intellisense. Ngoài ra, hãy xem thử nghiệm bao gồm mọi thứ và có thể dùng làm ví dụ.
Dưới đây là những thay đổi quan trọng nhất:
- Xác thực rõ ràng
- Được tối ưu hóa cho các nền tảng khác nhau (Node.js, Cloudflare worker và nhanh chóng)
- Hệ thống loại cải tiến
- Có lỗi
- Hỗ trợ đường ống
Xác thực rõ ràng
Việc xác thực tự động khi chỉ nhập các chức năng cụ thể đã gây ra các vấn đề trong đó hành vi thực tế khác với dự kiến và dẫn đến việc lãng phí thời gian gỡ lỗi một vấn đề có thể đã được ngăn chặn. Đặc biệt là trên các nền tảng khác nhau xử lý các biến môi trường khác nhau. Đó là lý do tại sao chúng tôi yêu cầu bạn xác thực rõ ràng khách hàng của mình.
Chúng tôi hiểu rằng đối với hầu hết các trường hợp sử dụng, bạn sẽ lưu trữ chúng trong môi trường của mình và chỉ yêu cầu chúng một lần để thiết lập ứng dụng Redis của bạn. @upstash/redis
cung cấp lối tắt ở đây:Tất cả những gì bạn cần làm là đặt UPSTASH_REDIS_REST_URL
và UPSTASH_REDIS_REST_TOKEN
dưới dạng biến môi trường và sau đó tải chúng trên nền tảng triển khai mà bạn chọn. Trong trường hợp chúng không được định cấu hình đúng, sẽ xảy ra lỗi.
Node.js
import { Redis } from "@upstash/redis";
const redis = Redis.fromEnv();
Nhân viên Cloudflare
import { Redis } from "@upstash/redis/cloudflare";
const redis = Redis.fromEnv();
Chỉ định loại
Phiên bản mới hỗ trợ các kiểu nghiêm ngặt cho mọi lệnh và đảm bảo bạn sẽ sớm tìm ra lỗi.
import { Redis } from "@upstash/redis";
const redis = new Redis({
/* auth */
});
type User = {
id: string;
email: string;
};
const user = {
id: "abc",
email: "[email protected]",
};
await redis.set<User>("userKey", user);
const user = await redis.get<User>("userKey");
// -> user is typed as User
Redis cung cấp nhiều lệnh với các đối số tùy chọn và các kết hợp có khả năng khác nhau. Typecript cho phép bạn kiểm tra bất kỳ kết hợp không hợp lệ nào trước khi thực thi một dòng mã.
redis.set("key", "value", {
ex: 60, // expire in 60 seconds
nx: true, // only create if the key does not yet exist
});
Xử lý lỗi
Phiên bản trước đó ít nhiều trả lại phản hồi thô từ API Upstash HTTP. Điều đó đòi hỏi bạn phải quan tâm đến việc kiểm tra xem lỗi có tồn tại hay không và sau đó ném nó đi. Trong javascript, bạn thường cho rằng lỗi sẽ được tạo ra khi có sự cố, vì vậy chúng tôi đang thực hiện điều đó.
Kể từ bây giờ, các lệnh chỉ trả về dữ liệu và tự động ném nếu có sự cố.
// `v0.2.1`
const { data, error } = await set("key", "value");
if (error) {
throw new Error(error);
}
// '^v1.0.0'
const data = await redis.set("key", "value");
Đường ống
Upstash cung cấp các lệnh Redis liên kết qua HTTP để kết hợp hàng loạt các yêu cầu với nhau và gửi chúng hàng loạt.
:::lưu ý Việc thực thi đường ống không phải là nguyên tử. Mặc dù mỗi lệnh trong đường dẫn sẽ được thực thi theo thứ tự, các lệnh do các máy khách khác gửi có thể xen kẽ với đường ống. :::
Bạn có thể tạo một đường dẫn mới từ redis
hiện có của mình ví dụ.
import { Redis } from "@upstash/redis";
const redis = new Redis({
/* auth */
});
const p = redis.pipeline();
Chúng tôi đã thiết kế API đường ống để cho phép xâu chuỗi nhiều lệnh. Sau khi bạn thêm tất cả các lệnh vào đường dẫn của mình, bạn có thể gửi yêu cầu và nhận một mảng trong đó mọi phần tử tương ứng với một lệnh theo cùng một thứ tự.
p.set("key", 2);
// or chain directly
p.incr("key").decrby("key", 2);
const res = await p.exec();
// res[0] => "OK" | the result of p.set("key", 2)
// res[1] => 3 | the result of p.incr("key")
// res[2] => 1 | the result of p.decrby("key", 2)
Làm cách nào để bắt đầu?
Truy cập console.upstash.com và tạo một cơ sở dữ liệu mới, sau đó làm theo hướng dẫn trong hướng dẫn bắt đầu nhanh
Nếu trước đây bạn đã sử dụng phiên bản cũ hơn, bạn có thể xem phần Di chuyển sang phiên bản v1 trên GitHub để bắt đầu.
Công việc trong tương lai
Upstash Redis gần đây đã nhận được bản cập nhật để tương thích với redis v6.2
, bao gồm các lệnh mới và mở rộng các lệnh khác. @upstash/redis
sẽ sớm hỗ trợ những điều này.
Là một nền tảng bổ sung, chúng tôi đang có kế hoạch hỗ trợ phiên bản này trong tương lai gần.
Các từ đóng
Đây là một thay đổi lớn và sẽ yêu cầu bạn thực hiện một số công việc để cập nhật. Vui lòng cho chúng tôi biết kinh nghiệm của bạn.
Chúng tôi hoan nghênh mọi phản hồi để cải thiện trải nghiệm của bạn khi làm việc với các sản phẩm Upstash. Đừng ngần ngại liên hệ với GitHub, Discord hoặc Twitter để biết lỗi hoặc nếu bạn muốn đóng góp, muốn yêu cầu một tính năng hoặc cần trợ giúp.