RESP2에서 RESP3로 마이그레이션하기

RESP2에서 RESP3로 마이그레이션하기 (Guide for migrating from RESP2 to RESP3 replies) (resp3-2)

Redis JSON 클라이언트를 RESP2에서 RESP3로 옮기는 개발자분들을 위한 페이지예요. RESP3에서 선택적 path 인자의 기본값이 .에서 $로 바뀌면서 일부 명령의 응답이 조금 달라졌어요. 이 페이지에서는 JSON 명령의 RESP2와 RESP3 응답을 간단히 비교해 드릴게요.

출처: Redis 공식 문서 — Guide for migrating from RESP2 to RESP3 replies

JSON 명령 응답 비교 (JSON command replies comparison)

타입은 "TypeScript스러운" 문법으로 설명해요. Array<T>는 요소의 타입은 알지만 개수는 모르는 배열을 뜻해요.

Command RESP2 RESP3
All JSON commands 선택적 path 인자 기본값: . 선택적 path 인자 기본값: $
JSON.ARRAPPEND
JSON.ARRINDEX
JSON.ARRINSERT
JSON.ARRLEN
JSON.ARRTRIM
JSON.OBJLEN
JSON.STRAPPEND
JSON.STRLEN
JSON.TOGGLE $ 기반 path 인자: Array<T> 응답
. 기반 path 인자: BulkString 응답 $ 기반 path 인자: Array<T> 응답
. 기반 path 인자: number 응답
JSON.GET JSON 인코딩 문자열 응답
예시:
> JSON.SET k $ "[1,2,3]"
> JSON.GET k
"[1,2,3]"
최상위 배열을 가진 JSON 인코딩 문자열 응답
예시:
> JSON.SET k $ "[1,2,3]"
> JSON.GET k
"[[1,2,3]]"
JSON.NUMINCRBY
JSON.NUMMULTBY
$ 기반 path 인자: JSON 인코딩 BulkString null
. 기반 path 인자: BulkString null
JSON.OBJKEYS $ 기반 path 인자: Array<Array<T>> $ 기반 path 인자: Array<Array<T>>
. 기반 path 인자: Array<T> . 기반 path 인자: Array<T>
JSON.TYPE $ 기반 path 인자: Array<T>
예시:
> JSON.TYPE k $
1) "array"
$ 기반 path 인자: Array<Array<T>>
예시:
> JSON.TYPE k $
1) 1) "array"
. 기반 path 인자: BulkString . 기반 path 인자: Array<T>

핵심적인 차이를 정리하면 이렇게 돼요.

  • 선택적 path 인자의 기본값이 .에서 $로 바뀌었어요.
  • ${ 기반 path는 여러 개의 매칭 결과를 낼 수 있어서 응답이 배열로 감싸지는 경우가 많아져요. 예를 들어 JSON.TYPEJSON.GET은 RESP3에서 최상위 배열로 감싼 응답을 반환해요.
  • . 기반 path는 단일 대상이므로 상대적으로 단순한 응답 형태를 유지해요.

더 알아보기 (Learn more)