fontcolor_theme
Deepkit Broker

브로커 Key-Value

Deepkit Broker Key-Value Class는 broker server와 동작하는 간단한 key/value store 추상화입니다. broker server로부터 데이터를 저장하고 가져오는 간단한 방법입니다.

로컬 캐싱은 구현되어 있지 않습니다. 모든 get 호출은 매번 브로커 서버로의 실제 네트워크 요청입니다. 이를 피하려면 Broker Cache 추상화를 사용하세요.

데이터는 서버에 영구 저장되지 않고 메모리에만 유지됩니다. 서버가 재시작되면 모든 데이터가 사라집니다.

사용법

import { BrokerKeyValue } from '@deepkit/broker';

const keyValue = new BrokerKeyValue(adapter, {
  ttl: '60s', // 각 key의 time-to-live. 0은 ttl 없음(기본값).
});

const item = keyValue.item<number>('key1');

await item.set(123);
console.log(await item.get()); //123

await item.remove();

데이터는 지정된 Type을 기반으로 BSON을 사용해 자동으로 직렬화/역직렬화됩니다.

setget 메서드는 BrokerKeyValue 인스턴스에서 직접 호출할 수도 있지만, 매번 key와 Type을 넘겨야 한다는 단점이 있습니다.

await keyValue.set<number>('key1', 123);
console.log(await keyValue.get<number>('key1')); //123

Increment

increment Method는 주어진 값만큼 key의 값을 원자적으로 증가시킬 수 있게 해줍니다.

이는 서버에 자체 저장 엔트리를 생성하며 set 또는 get과 호환되지 않는다는 점에 유의하세요.

const activeUsers = keyValue.item<number>('activeUsers');

// 1씩 원자적으로 증가
await activeUsers.increment(1);

await activeUsers.increment(-1);

// 현재 값을 얻는 유일한 방법은 0으로 increment를 호출하는 것입니다
const current = await activeUsers.increment(0);

// 엔트리를 제거합니다
await activeUsers.remove();

앱 사용법

애플리케이션에서 BrokerKeyValue를 사용하는 전체 예제입니다. FrameworkModule을 import하면 이 Class는 DI 컨테이너에 자동으로 제공됩니다. 자세한 내용은 Getting Started 페이지를 참조하세요.

import { BrokerKeyValue, BrokerKeyValueItem } from '@deepkit/broker';
import { FrameworkModule } from '@deepkit/framework';

// 이 Type을 공유 파일로 이동하세요
type MyKeyValueItem = BrokerKeyValueItem<User[]>;

class Service {
  constructor(private keyValueItem: MyKeyValueItem) {
  }

  async getTopUsers(): Promise<User[]> {
    // undefined일 수 있습니다. 이 경우를 처리해야 합니다.
    // 이를 피하려면 Broker Cache를 사용하세요.
    return await this.keyValueItem.get();
  }
}

const app = new App({
  providers: [
    Service,
    provide<MyKeyValueItem>((keyValue: BrokerKeyValue) => keyValue.item<User[]>('top-users')),
  ],
  imports: [
    new FrameworkModule(),
  ],
});
English中文 (Chinese)한국어 (Korean)日本語 (Japanese)Deutsch (German)