1. Redis 서버는 있다고 가정.
2. build.gradle 에 의존성 추가.
1
2
|
// redis 접속
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
|
cs |
3. application.yml Redis 정보 설정
- 현재 단독 구성
- sentinel, cluster로도 구성 가능
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
spring:
# Redis
redis:
database: 0
# 단독구성 접속설정
host: 127.0.0.1
password:
port: 6379
# sentinel구성 접속설정
# sentinel:
# master: springboot
# nodes:
# - 127.0.0.1:16379
# - 127.0.0.1:16380
# - 127.0.0.1:16381
# cluster구성 접속설정
cluster:
nodes: #
# - 10.123.1.88:16400
# - 10.123.1.88:16401
# - 10.123.1.88:16402
# lettuce:
# pool:
# max-active: 8 #Maximum number of connections
# max-idle: 8 #Maximum Idle Connection
# min-idle: 0 #Minimum idle connection
#shutdown-timeout: 200ms
|
cs |
4. RedisConfig 설정. ㅁㄴㅇㄹ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
@Configuration
@EnableRedisRepositories
@RequiredArgsConstructor
public class RedisConfig {
@Value("${spring.redis.host}")
private String redisHost;
@Value("${spring.redis.port}")
private int redisPort;
@Value("${app-config.config.key-profile}")
private String keyProfile;
@Value("${spring.redis.cluster.nodes}")
@Null
private List<String> clusterNodes;
/** Redis 접속 */
@Bean
public RedisConnectionFactory redisConnectionFactory() {
// cluster 사용인 경우
if( keyProfile.equals("clusterNodes")) {
RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration(clusterNodes);
return new LettuceConnectionFactory(redisClusterConfiguration);
} else {
//
return new LettuceConnectionFactory(redisHost, redisPort);
}
}
/** redisTemplate */
@Bean
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory());
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new StringRedisSerializer());
return redisTemplate;
}
}
|
cs |
5. Redis 사용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
private final RedisTemplate<String, Object> redisTemplate;
// 데이터 저장 (Expire 설정)
ValueOperations<String, Object> values = redisTemplate.opsForValue();
values.set(key, value, duration);
// 데이터 저장 (Expire 미설정)
ValueOperations<String, Object> values = redisTemplate.opsForValue();
values.set(key, value);
// 데이터 조회
ValueOperations<String, Object> values = redisTemplate.opsForValue();
if (values.get(key) == null) {
값이 없음
}
// 데이터 삭제
redisTemplate.delete(key);
// Expire 시간 재설정
redisTemplate.expire(key, timeout, TimeUnit.MILLISECONDS);
|
cs |
끝!!! ^_^
반응형
'개발 > Java, Spring' 카테고리의 다른 글
Spring Security Redis deserialize 오류 (Spring Boot 버전 업데이트) (0) | 2024.05.23 |
---|---|
Spring Boot 스레드 사용 동기 처럼 사용하기. (2) | 2024.05.14 |
MultipartFile로 받은 파일 Byte[]보내기 그리고 저장 (0) | 2024.03.19 |
[JPA] Spring JPA CascadeType 종류 (0) | 2023.08.25 |
AOP로 컨트롤러 권한체크하기 (0) | 2023.01.16 |