Redis JSON 성능
Redis JSON 성능 (Performance) (performance-2)
Redis JSON이 어느 정도 성능을 내는지 궁금하실 거예요. 이 페이지에서는 Redis JSON의 성능 벤치마크 결과를 살펴볼게요. 여러분의 워크로드에서 JSON 모듈이 얼마나 빠른지 감을 잡을 수 있도록 옆에서 차트와 수치를 함께 설명드릴게요.
Redis JSON의 가능성을 일찍 가늠해 보려면 다른 Redis 명령처럼 redis-benchmark로 테스트할 수 있어요. 다만 테스트를 더 잘 제어하려면, 이 페이지에서는 가까운 시일 내에 공개 예정인 Go로 작성된 ReJSONBenchmark라는 도구를 사용했습니다.
아래 수치들은 Redis 서버와 벤치마킹 도구를 모두 실행한 AWS EC2 c4.8xlarge 인스턴스에서 얻은 거예요. 서버와의 연결은 네트워킹 스택을 통해 이뤄지고, 모든 테스트는 파이프라이닝(pipelining)을 사용하지 않았어요.
참고: 아래 결과는 아직 최적화가 많이 되지 않은 Redis JSON의 프리뷰(preview) 버전으로 측정한 것입니다.
Redis JSON 베이스라인 (Redis JSON baseline)
작은 객체 (A smallish object)
순수하게 합성적이지만 흥미로운 JSON 값을 테스트해요. 테스트 대상은 380바이트이고 중첩된 /tests/files/pass-100.json이에요. 먼저 SET한 다음 여러 다른 경로로 GET을 테스트했어요.
더 큰 배열 (A bigger array)
더 큰 값으로 넘어가서, /tests/files/pass-jsonsl-1.json의 1.4 kB 배열을 사용해요.
꽤 큰 객체 (A largish object)
계속해서 이번에는 /tests/files/pass-json-parser-0000.json이 주는, 3.5 kB에 달하는 거대한 객체를 다뤄요.
숫자 연산 (Number operations)
마지막으로, 어떤 더하기와 곱하기 연산도 함께 봅니다.
베이스라인 (Baseline)
베이스라인을 잡기 위해 Redis PING 명령을 사용해요. 먼저 redis-benchmark가 뭐라고 보고하는지 보죠.
~$ redis/src/redis-benchmark -n 1000000 ping
====== ping ======
1000000 requests completed in 7.11 seconds
50 parallel clients
3 bytes payload
keep alive: 1
99.99% <= 1 milliseconds
100.00% <= 1 milliseconds
140587.66 requests per second
ReJSONBenchmark의 동시성은 설정 가능해서, 좋은 값을 찾기 위해 몇 가지 설정을 테스트했어요. 결과상 16개 워커(worker)가 가장 좋은 성능을 냈습니다. (확인 필요: 원문의 전체 결괏값)
서버 측 Lua 스크립팅과의 비교 (Comparison vs. server-side Lua scripting)
Redis JSON을 서버 측 Lua 스크립팅과 비교하면 그 가치를 더 확실히 알 수 있어요. JSON 명령이 서버에서 직접 처리되므로, 데이터를 클라이언트로 내려보내고 다시 올려보내는 오버헤드 없이 서버 안에서 JSON 문서를 조작할 수 있습니다.
루트 설정과 얻기 (Setting and getting the root)
객체 일부 설정과 얻기 (Setting and getting parts of objects)
더 많은 차트 (Even more charts)
원시 결과 (Raw results)
이 장에서는 실제 측정값을 자세히 다룹니다.
JSON 결과 (JSON results)
cjson을 쓰는 Lua (Lua using cjson)
cmsgpack을 쓰는 Lua (Lua using cmsgpack)
이 페이지는 벤치마크의 구체적인 차트와 표를 담고 있습니다. 차트에 표시되는 세부 수치 그래프는 원문의 이미지/표를 참고하세요. (확인 필요: 원문 차트 이미지)