Computer >> 컴퓨터 >  >> 프로그램 작성 >> Redis

Upstash Redis SDK v1.0.0 발표

오늘 우리는 @upstash/redis를 발표합니다. v1.0.0.

@upstash/redis 서버리스용으로 설계되었으며 Cloudflare 작업자와 빠르게 호환되는 유일한 연결 없는(HTTP 기반) Redis 클라이언트입니다.

v1.0.0의 새로운 기능은 무엇입니까?

버전 1.0.0은 이전 라이브러리를 완전히 재작성한 것입니다. 우리가 받은 가장 큰 기능 요청 중 하나는 파이프라인 지원과 향상된 유형 안전성이었습니다. 이러한 새로운 기능의 특성으로 인해 v1 이전 버전과 호환되지 않지만 기본 REST API가 변경되지 않았기 때문에 이전 버전은 계속 작동합니다.

대부분의 명령은 redis.setex("key", 2, "value")와 같이 Redis에서 사용하는 것과 동일한 구문을 따릅니다. . hset와 같은 다른 경우 직접 수행해야 하는 (역)직렬화의 양을 줄이기 위해 사용하기 쉬운 API를 제공합니다.

await redis.hset("123", {
  id: "123",
  name: { first: "andreas" },
});

이것은 내부적으로 hset 123 id 123 name {"first":"andreas"}로 직렬화됩니다. Upstash로 보냈습니다. 개체는 자동으로 직렬화되므로 더 이상 직접 직렬화할 필요가 없습니다.

명령을 어떻게 사용할 수 있는지 확실하지 않은 경우 편집기가 인텔리센스를 지원하면 typescript가 도움이 될 것입니다. 또한 모든 것을 다루고 예시로 사용할 수 있는 테스트를 확인하십시오.

가장 중요한 변경사항은 다음과 같습니다.

  • 명시적 인증
  • 다양한 플랫폼에 최적화됨(Node.js, Cloudflare 작업자 및 fastly)
  • 개선된 문자 시스템
  • 오류 발생
  • 파이프라인 지원

명시적 인증

특정 기능만 가져올 때의 자동 인증은 실제 동작이 예상과 다른 문제를 일으키고 방지할 수 있었던 문제를 디버깅하는 데 시간을 낭비하게 했습니다. 특히 환경 변수를 다르게 처리하는 다른 플랫폼에서. 그렇기 때문에 클라이언트를 명시적으로 인증해야 합니다.

대부분의 사용 사례에서 환경에 저장하고 Redis 클라이언트를 설정하는 데 한 번만 필요하다는 것을 알고 있습니다. @upstash/redis 여기에서 바로 가기를 제공합니다. UPSTASH_REDIS_REST_URL을(를) 설정하기만 하면 됩니다. 및 UPSTASH_REDIS_REST_TOKEN 환경 변수로 지정한 다음 선택한 배포 플랫폼에 로드합니다. 제대로 구성되지 않은 경우 오류가 발생합니다.

Node.js

import { Redis } from "@upstash/redis";
const redis = Redis.fromEnv();

Cloudflare 작업자

import { Redis } from "@upstash/redis/cloudflare";
const redis = Redis.fromEnv();

타입스크립트

새 버전은 모든 명령에 대해 엄격한 유형을 지원하며 실수를 더 빨리 찾을 수 있도록 합니다. 유형은 선택 사항이며 기본적으로 가능한 경우 유형을 유추합니다.

import { Redis } from "@upstash/redis";
const redis = new Redis({
  /* auth */
});

type User = {
  id: string;
  email: string;
};

const user = {
  id: "abc",
  email: "andreas@upstash.com",
};

await redis.set<User>("userKey", user);

const user = await redis.get<User>("userKey");
// -> user is typed as User

Redis는 선택적 인수와 잠재적으로 다른 조합이 있는 많은 명령을 제공합니다. Typescript를 사용하면 한 줄의 코드를 실행하기 전에 잘못된 조합이 있는지 확인할 수 있습니다.

redis.set("key", "value", {
  ex: 60, // expire in 60 seconds
  nx: true, // only create if the key does not yet exist
});

오류 처리

이전 버전은 Upstash HTTP API에서 원시 응답을 어느 정도 반환했습니다. 이를 위해서는 오류가 있는지 확인한 다음 처리해야 합니다. 자바스크립트에서는 일반적으로 문제가 발생했을 때 오류가 발생하는 것으로 예상하므로 그렇게 하고 있습니다.

이제부터 명령은 데이터만 반환하고 문제가 발생하면 자동으로 던집니다.

// `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");

파이프라인

Upstash는 HTTP를 통해 Redis 명령을 파이프라이닝하여 요청을 함께 일괄 처리하고 대량으로 보낼 수 있습니다. 이렇게 하면 특히 서버리스 기능을 사용할 때 실행 시간을 줄이고 비용을 절약할 수 있습니다.

:::note파이프라인의 실행은 원자적이지 않습니다. 파이프라인의 각 명령은 순서대로 실행되지만 다른 클라이언트가 보낸 명령은 파이프라인과 인터리브될 수 있습니다.:::

기존 redis에서 새 파이프라인을 만들 수 있습니다. 인스턴스.

import { Redis } from "@upstash/redis";
const redis = new Redis({
  /* auth */
});

const p = redis.pipeline();

여러 명령을 연결할 수 있도록 파이프라인 API를 설계했습니다. 파이프라인에 모든 명령을 추가한 후 요청을 보내고 모든 요소가 동일한 순서로 명령에 해당하는 배열을 받을 수 있습니다.

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)

시작하려면 어떻게 해야 하나요?

console.upstash.com으로 이동하여 새 데이터베이스를 생성합니다. 그런 다음 빠른 시작 가이드의 지침을 따르십시오.

이전에 이전 버전을 사용한 적이 있다면 GitHub의 Migrate to v1 섹션을 확인하여 시작할 수 있습니다.

향후 작업

Upstash Redis는 최근 redis v6.2와 호환되는 업데이트를 받았습니다. , 새 명령을 포함하고 다른 명령을 확장합니다. @upstash/redis 곧 지원할 예정입니다.

추가 플랫폼으로 가까운 시일 내에 deno를 지원할 예정입니다.

마무리 단어

이것은 큰 변화이며 업데이트하려면 약간의 작업이 필요합니다. 귀하의 경험을 알려주세요.

Upstash 제품으로 작업할 때 경험을 개선하기 위한 피드백을 환영합니다. 버그에 대해 GitHub, Discord 또는 Twitter에 연락하거나 기여에 관심이 있거나 기능을 요청하거나 도움이 필요하면 주저하지 마십시오.