Redis Sink 커넥터

Redis Sink 커넥터

Redis sink 커넥터는 Pulsar 토픽에서 메시지를 가져와 Redis 데이터베이스에 저장하는 커넥터예요. Pulsar의 데이터를 인메모리 데이터 스토어인 Redis에 써 넣을 때 사용해요.

참고: 모든 Pulsar 커넥터는 download page에서 내려받을 수 있어요.

출처: 문서

본문

구성 (Configuration)

Redis sink 커넥터의 구성에는 다음과 같은 프로퍼티가 있어요.

프로퍼티 (Property)

이름 타입 필수 기본값 설명
redisHosts String true " " (빈 문자열) 연결할 Redis 호스트의 쉼표 구분 목록이에요.
redisPassword String false " " (빈 문자열) Redis에 연결하는 데 사용하는 비밀번호예요.
redisDatabase int true 0 연결할 Redis 데이터베이스예요.
clientMode String false Standalone Redis 클러스터와 상호작용할 때의 클라이언트 모드예요. 사용 가능한 옵션은 다음과 같아요.
Standalone, Cluster
autoReconnect boolean false true Redis 클라이언트가 자동으로 재연결할지 여부예요.
requestQueue int false 2147483647 Redis에 큐잉되는 최대 요청 수예요.
tcpNoDelay boolean false false 지연 없는 TCP(no delay)를 활성화할지 여부예요.
keepAlive boolean false false Redis에 keepalive를 활성화할지 여부예요.
connectTimeout long false 10000 연결 시 타임아웃되기까지 기다리는 시간(밀리초)이에요.
operationTimeout long false 10000 작업이 타임아웃으로 표시되기까지의 시간(밀리초)이에요.
batchTimeMs int false 1000 Redis 작업 시간(밀리초)이에요.
batchSize int false 200 Redis 데이터베이스에 쓰는 배치 크기예요.

예제 (Example)

Redis sink 커넥터를 사용하기 전에 Pulsar 서비스를 시작할 경로(PULSAR_HOME)에 다음 방법 중 하나로 구성 파일을 만들어야 해요.

  • JSON
{
   "configs": {
      "redisHosts": "localhost:6379",
      "redisPassword": "mypassword",
      "redisDatabase": "0",
      "clientMode": "Standalone",
      "operationTimeout": "2000",
      "batchSize": "1",
      "batchTimeMs": "1000",
      "connectTimeout": "3000"
   }
}
  • YAML
configs:
    redisHosts: "localhost:6379"
    redisPassword: "mypassword"
    redisDatabase: 0
    clientMode: "Standalone"
    operationTimeout: 2000
    batchSize: 1
    batchTimeMs: 1000
    connectTimeout: 3000

사용법 (Usage)

이 예시는 Pulsar Redis 커넥터를 사용해 Redis 데이터베이스에 레코드를 쓰는 방법을 보여줘요.

  • Redis 서버를 시작해요.
docker pull redis:5.0.5
docker run -d -p 6379:6379 --name my-redis redis:5.0.5 --requirepass "mypassword"
  • Pulsar 서비스를 로컬 standalone 모드로 시작해요.
bin/pulsar standalone

NAR 파일이 connectors/pulsar-io-redis-5.0.0-M2.nar 경로에 있는지 확인하세요.

  • 다음 방법 중 하나로 Pulsar Redis 커넥터를 로컬 실행(local run) 모드로 시작해요.
bin/pulsar-admin sinks localrun \
    --archive $PWD/connectors/pulsar-io-redis-5.0.0-M2.nar \
    --tenant public \
    --namespace default \
    --name my-redis-sink \
    --sink-config '{"redisHosts": "localhost:6379","redisPassword": "mypassword","redisDatabase": "0","clientMode": "Standalone","operationTimeout": "3000","batchSize": "1"}' \
    --inputs my-redis-topic
bin/pulsar-admin sinks localrun \
    --archive $PWD/connectors/pulsar-io-redis-5.0.0-M2.nar \
    --tenant public \
    --namespace default \
    --name my-redis-sink \
    --sink-config-file $PWD/redis-sink-config.yaml \
    --inputs my-redis-topic
  • 앞에서 보여준 JSON 구성 파일을 사용해요.

  • 앞에서 보여준 YAML 구성 파일을 사용해요.

  • 토픽에 레코드를 발행해요.

bin/pulsar-client produce \
    persistent://public/default/my-redis-topic \
    -k "streaming" \
    -m "Pulsar"
  • Docker에서 Redis 클라이언트를 시작해요.
docker exec -it my-redis redis-cli -a "mypassword"
  • Redis에서 키/값을 확인해요.
127.0.0.1:6379> keys *
1) "streaming"
127.0.0.1:6379> get "streaming"
"Pulsar"

더 알아보기 (Learn more)