Redis 클라이언트 라이브러리로 연결하기
Redis 클라이언트 라이브러리로 연결하기 (Connect with Redis client API libraries)
우리 애플리케이션에서 Redis를 쓰려면 결국 "연결"이 첫걸음이에요. Redis 서버에 직접 명령을 입력하는 redis-cli와 달리, 실제 코드에서는 클라이언트 라이브러리를 통해 연결해서 데이터를 주고받게 됩니다. 이 페이지에서 어떤 언어에 어떤 클라이언트가 있고, 어떻게 고르면 좋을지를 함께 알아볼게요.
출처: 공식문서
어떤 클라이언트가 있나요?
애플리케이션 코드에서 Redis 서버에 연결하려면 Redis 클라이언트 라이브러리를 사용해요. Redis 문서에서는 다음 아홉 가지 언어의 클라이언트 라이브러리를 다루고 있습니다.
| 언어 | 클라이언트 이름 | 문서 | 지원 |
|---|---|---|---|
| Python | redis-py | redis-py guide | 예 |
| Python | RedisVL | RedisVL guide | 예 |
| C#/.NET | StackExchange.Redis | StackExchange.Redis guide | 예 |
| C#/.NET | NRedisStack | NRedisStack guide | 예 |
| JavaScript | node-redis | node-redis guide | 예 |
| JavaScript | ioredis | ioredis guide | 예 |
| Java | Jedis | Jedis guide | 예 |
| Java | Lettuce | Lettuce guide | 예 |
| Go | go-redis | go-redis guide | 예 |
| PHP | Predis | Predis guide | 최선의 노력 * |
| C | hiredis | hiredis guide | 예 |
| Rust | redis-rs | redis-rs guide | 최선의 노력 * |
| Ruby | redis-rb | redis-rb guide | 예 |
참고로 * 표시가 붙은 라이브러리는 Redis가 공식 지원하지 않는 서드파티 라이브러리예요. 다만 새 기능을 기여하고, 안내하고, 커뮤니티와 협력해서 이 라이브러리들이 안정적으로 최신 상태를 유지하도록 최선을 다하고 있죠.
또한 Python, C#/.NET, Node.js, Java/Spring용으로 좀 더 높은 수준의 객체 매핑(OM) 라이브러리도 함께 제공하고 있어요.
커뮤니티 지원 클라이언트
아래 표는 널리 쓰이는 서드파티 클라이언트 라이브러리들이에요. 이들은 Redis가 직접 개발하거나 기여하지 않는 라이브러리라는 점을 참고하세요.
| 언어 | 클라이언트 이름 | Github | 문서 |
|---|---|---|---|
| C++ | Boost.Redis | https://github.com/boostorg/redis | https://www.boost.org/doc/libs/develop/libs/redis/doc/html/index.html |
| Dart | redis_dart | https://github.com/toolsetlink/redis_dart_link | https://github.com/toolsetlink/redis_dart_link |
| PHP | PhpRedis extension | https://github.com/phpredis/phpredis | https://github.com/phpredis/phpredis/blob/develop/README.md |
| Python | coredis | https://github.com/alisaifee/coredis | https://coredis.readthedocs.io |
| Scala | Sage | https://github.com/ghostdogpr/sage | https://ghostdogpr.github.io/sage/ |
준비 사항
클라이언트 라이브러리를 쓰려면 연결할 Redis 서버가 필요해요. 로컬에 Redis Open Source를 설치해서 실험할 수도 있고, Redis Cloud의 무료 체험판을 쓸 수도 있습니다. 코드를 작성하지 않고 Redis 서버를 바로 만져보고 싶다면 redis-cli와 Redis Insight 도구를 사용하면 돼요.
언어별 클라이언트 고르기
몇몇 언어는 추천하는 클라이언트가 하나뿐이지만, Python, JavaScript, Java, C#, PHP는 여러 선택지가 있어요. 각 언어에서 어떤 차이가 있는지 정리한 부분을 살펴볼게요.
Python
- redis-py 는 대부분의 사용 사례에서 추천하는 Python 클라이언트예요.
- RedisVL 은 고차원 벡터 데이터를 다루는 데 특화되어 있어서 AI/ML 워크플로에 좋은 선택이에요.
- RedisOM for Python 은 Redis 데이터 구조를 높은 수준의 API로 다루게 해주는 객체 매핑 라이브러리예요.
JavaScript
- node-redis 는 대부분의 사용 사례에서 추천하는 JavaScript 클라이언트예요.
- ioredis 는 여전히 지원되는 오래된 라이브러리인데, node-redis의 최신 기능과 성능 최적화 중 일부는 부족해요. ioredis 프로젝트를 node-redis로 전환하고 싶다면 마이그레이션 가이드(Migrate from ioredis)가 준비되어 있어요.
- RedisOM for Node.js 는 Redis 데이터 구조를 높은 수준의 API로 다루게 해주는 객체 매핑 라이브러리예요.
Java
- Jedis 는 Redis의 전체 기능을 지원하고 API가 직관적이지만, 동기(synchronous) 연산만 지원해요.
- Lettuce 는 동기, 비동기, 리액티브 연산을 모두 지원해요. 다만 Jedis보다 API가 복잡하고 현재 모든 Redis 기능(특히 time series와 확률적 데이터 구조)을 지원하지는 않아요.
- RedisOM for Java 는 Redis 데이터 구조를 높은 수준의 API로 다루게 해주는 객체 매핑 라이브러리예요.
C#
- StackExchange.Redis 는 핵심 Redis 데이터 타입과 명령을 사용할 때 추천하는 C# 클라이언트예요.
- NRedisStack 은 StackExchange.Redis 위에 JSON, Redis search, Time series 같은 확장 데이터 타입과 기능 지원을 더한 라이브러리예요.
- RedisOM for .NET 은 Redis 데이터 구조를 높은 수준의 API로 다루게 해주는 객체 매핑 라이브러리예요.
PHP
- Predis 는 대부분의 사용 사례에서 추천하는 PHP 클라이언트예요. Redis 팀의 "최선의 노력" 지원(서드파티 라이브러리지만 Redis 팀이 기여하고 문제를 돕는)을 받고 Redis 문서에서도 많이 다루고 있어요. 다만 PHP로 구현되어 C로 구현된 phpredis보다 성능이 제한적이에요.
- phpredis 는 PHP용 C 확장으로 구현되어 성능이 더 좋은 인기 있고 잘 관리되는 PHP 클라이언트예요. 다만 Redis 팀이 적극적으로 지원하거나 문서화하지는 않아요.
클라이언트 결정 트리
어떤 클라이언트를 고를지 아래 결정 트리가 도와줘요. 단, 이 결론은 확정적인 답이 아니라 조사 과정의 지침으로 봐주시면 좋아요.
Go, Rust, C, C++, Dart, Ruby를 쓰나요?
예 → 이 언어들은 추천 클라이언트가 하나뿐이에요.
위 표에 있는 언어별 클라이언트를 사용하세요.
아니요
Python, JavaScript, Java, C#/.NET를 쓰고
객체 매핑(ORM 같은) 기능이 필요한가요?
예 → 해당 언어의 RedisOM을 사용하세요
(Python, JavaScript, Java, C#/.NET 제공)
아니요 → 어떤 언어를 쓰나요?
Python:
고차원 벡터 연산 중심의 AI/ML 애플리케이션인가요?
예 → RedisVL을 사용하세요
아니요 → redis-py를 사용하세요
JavaScript:
기존 코드베이스에서 ioredis를 쓰고 있나요?
예
search, 벡터 DB, JSON 같은 고급 Redis 기능이 필요한가요?
예 → 마이그레이션 가이드로 node-redis로 전환하세요
아니요 → ioredis를 계속 사용하세요
아니요 → node-redis를 사용하세요
Java:
비동기나 리액티브 연산이 필요한가요?
예 → Lettuce를 사용하세요
아니요 → Jedis를 사용하세요
PHP:
완전한 지원과 문서보다 최대 성능이 우선인가요?
예 → PhpRedis를 사용하세요
아니요 → Predis를 사용하세요
C#:
JSON, Search, 벡터 검색, Time series 같은
Redis Stack 기능이 필요한가요?
예 → NRedisStack을 사용하세요
아니요 → StackExchange.Redis를 사용하세요
더 알아보기 (Learn more)
이제 연결 방법이 정해졌다면, 실제로 각 클라이언트로 어떻게 연결하고 데이터를 주고받는지가 궁금하실 거예요. 언어별로 이어진 시작하기 페이지(java, nodejs, redis-py, spring 등)를 따라가 보세요. 연결 후에는 데이터 타입과 명령 사용법을 익히면 한층 더 활용 범위가 넓어져요.