Lettuce Introduction

레디스 개발자 교육 신청 레디스 정기점검/기술지원
Redis Technical Support
레디스 엔터프라이즈 서버
Redis Enterprise Server

Lettuce 개요

Lettuce(레터스)는 많은 사이트에서 사용되고 있는 Java용 Redis Client 입니다.
Spring Boot 2.0부터 Lettuce가 Redis 기본 클라이언트로 사용되고 있습니다.
Spring Boot 1.x에서는 Jedis가 기본 클라이언트로 사용되었습니다.

Lettuce Version History


기본 사용법

① RedisURI redisUri = RedisURI.Builder.redis("localhost",6379).build();
Redis 서버의 주소(ip와 port)를 지정해서 RedisURI를 생성합니다.
② RedisClient client = RedisClient.create(redisUri);
RedisURI로 RedisClient 인스턴스를 생성합니다.
③ StatefulRedisConnection<String, String> connection = client.connect();
Redis 서버에 연결합니다.
④ RedisCommands<String, String> commands = connection.sync();
Sync 명령 실행용 API를 얻습니다.
⑤ String result = commands.set("key","value");
SET 명령을 실행해서 "key"와 "value"를 저장합니다.
⑥ String value = commands.get("key");
GET 명령을 실행해서 "value"를 가져옵니다.
⑦ result = commands.del("key");
DEL 명령을 실행해서 입력된 "key"를 삭제합니다.
⑧ connection.close();
연결을 종료합니다. 일반적으로 애플리케이션을 끝날 때 실행합니다.
⑨ client.shutdown();
레디스 클라이언트를 종료합니다. 스레드와 리소스를 해제합니다.

Source code

RedisURI를 이용한 연결(접속) 방법

Case 1: IP, Port
Case 2: IP, Port, Password
Case 3: IP, Port, Password, Database, CommandTimeout, ClientName

Connect String(URI)을 이용한 연결(접속) 방법

URI syntax

위에서 설명한 RedisURI와 같은 방법으로 Connect String(URI)으로 RedisClient를 생성한다.
redisClient = RedisClient.create(uri);

Case 1: IP, Port
Case 2: IP, Port, Password
Case 3: IP, Port, Password, Database, CommandTimeout, ClientName
RedisClient 내부에서 받은 string을 RedisURI로 만들어서 사용한다.
그러므로 위에서 설명한 RedisURI를 이용한 연결(접속) 방법을 권장합니다.

SSL/TLS를 이용한 연결 방법: redis -> rediss로 변경한다.

Unix Domain Sockets을 이용한 연결 방법: host:port 자리에 path를 지정한다. database 위치가 다르다.

Timeout 단위: 단위를 지정하지 않으면 ms(Milliseconds)가 기본으로 적용된다.
  d Days
  h Hours
  m Minutes
  s Seconds
  ms Milliseconds
  us Microseconds
  ns Nanoseconds
  application.properties에 redis.timeout: 5s 이렇게 지정할 수 있다.


Lettuce Spring Project

Spring Project 생성

이제 Java Spring Project를 생성해서 애플리케이션을 작성/실행해 봅니다.
Java Spring Project 생성 URL: start.spring.io

Java Spring Project 생성
  • Project: Gradle-Groovy
  • Language: Java
  • Spring Boot: 3.1.8
  • Project Metadata
    • Group: com.redisgate
    • Artifact: RedisLettuce -> Project 명칭, 이 이름으로 압축파일이 생긴다.
    • Name: Main -> Main Class Name
    • Description: Redis Lettuce Application -> 설명
    • Package name: com.redisgate.redis -> Package Name
    • Packaging: Jar
    • Java: 17 -> Java 버전 선택
  • Dependencies에서 [ADD … CTRL + B] 버튼을 클릭해서 아래 3개를 추가합니다.
    • Spring Web
    • Lombok
    • Spring Data Redis(Access+Driver)
  • 마지막으로 [GENERATE CTRL + ⏎ ] 버튼 클릭해서 압축 파일(zip)을 다운받는다.
  • 스프링부트3.x 는 자바17 이상, 스프링부트 2.x는 자바11을 사용합니다.

개발 툴(IDE) 설정, 사용법

이 프로젝트에 사용된 Lettuce, Spring, Redis 버전

  • Lettuce-6.2.7
  • Spring-Boot: 3.1.8, Spring: 6.0.16
  • Redis-7.2.3

Class/File 구성

Main class

application.properties

RedisProps class

application.properties 파일을 읽어오는 클래스.

  • password는 char[]를 사용한다. String을 사용하면 .toCharArray()를 추가해야 한다.

RedisConn class

Redis 서버에 연결한다.

연결 방법
  • 연결 방법은 RedisURI.Builder, Connection URL 2가지로 설명한다. 각 방법은 soruce code를 참고하세요.
  • Connection URL: redis://[[username:]password@]host [: port][/database]
    [? [timeout=timeout[d|h|m|s|ms|us|ns]] [ &database=database] [&clientName=clientName]
  • RedisURI.Builder 사용을 권장합니다.
연결 구분
  • 용도에 따라 구분해서 연결(connection)을 사용한다. Sync, Async, Pipeline, Publish, Subscribe 용.
  • Async connection: Sync connection 과 구분해서 사용한다.
  • Pipeline connection: 대량 입력용 연결이므로 구분해서 사용한다.
  • Publish connection과 Subscribe connection을 구분해서 사용한다. 한 connection으로 subscribe 중이면 publish 명령을 사용할 수 없다.
  • 일반 연결(Sync)로 publish 명령을 사용할 수 있으나, Publish connection으로 사용할 것을 권장합니다.


Lettuce Introduction Strings >>

Email 답글이 올라오면 이메일로 알려드리겠습니다.