lettuce2_intro
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
- 2014년 9월 12일 ver 3.0 lettuce 3.5.0.Final API
- 2015년 10월 2일 ver 4.0 lettuce 4.5.0.Final API
- 2017년 10월 28일 ver 5.0 lettuce 5.0.0 reference
- 2021년 4월 13일 ver 5.3.7 lettuce 5.3.7 reference
- 2020년 10월 2일 ver 6.0 lettuce 6.0.0 reference
- 2023년 11월 15일 ver 6.3.0 lettuce 6.3.0 reference
기본 사용법
- ① 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
그러므로 위에서 설명한 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
- 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) 설정, 사용법
- Spring Project 생성, IntelliJ(인텔리J), Eclipse(이클립스) Java 버전 설정 방법은 여기를 보세요.
- Eclipse Spring Project Import(Open) 방법, Lombok 에러 해결 방법은 여기를 보세요.
- IntelliJ Spring Project Open 방법, IntelliJ Lombok 인식 오류 해결 방법은 여기를 보세요.
이 프로젝트에 사용된 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 파일을 읽어오는 클래스
- RedisConn class: 레디스 클러스터에 연결하는 클래스
- Redis1_String class: 레디스 스트링 명령 구현 클래스
- Redis2_List class: 레디스 리스트 명령 구현 클래스
- Redis3_Set class: 레디스 셋 명령 구현 클래스
- Redis4_ZSet class: 레디스 정렬셋 명령 구현 클래스
- Redis5_Hash class: 레디스 해시 명령 구현 클래스
- Redis6_Stream class: 레디스 스트림 명령 구현 클래스
- Redis7_Common class: 레디스 키 공통 명령 구현 클래스
- Redis8_Async class: Lettuce 비동기 설명과 구현 클래스
- Redis9_Pipeline class: 레디스 Pipeline 설명과 구현 클래스
- Redis10_PubSub class: 레디스 Pub/Sub 구현 클래스
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
답글이 올라오면 이메일로 알려드리겠습니다.