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.TYPE과JSON.GET은 RESP3에서 최상위 배열로 감싼 응답을 반환해요..기반 path는 단일 대상이므로 상대적으로 단순한 응답 형태를 유지해요.