티스토리 뷰
여기서는 Jedis가 아닌 Lettuce를 이용하여 연계를 했다.
Lettuce는 Netty 기반의 Redis Client로 비동기로 요청을 처리하여 성능에 장점이 있어 사용했다.
일단 Jedis 기반처럼 Pool을 별도로 사용하지 않아도 돼서 개발에 편한점도 한몫함.
Dependency 추가
아래 dependency만 추가해주면 사용 가능하다.
<!-- Redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
Redis 설정 추가
Redis의 host와 port 정보를 application.yml 파일에 설정
spring:
redis:
lettuce:
pool:
max-active: 10
max-idle: 10
min-idle: 2
port: 6379
host: 127.0.0.1
channel: foo
아래 Redis 관련 Configuration 추가
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
|
@Configuration
public class RedisConfig {
@Value("${spring.redis.host}")
private String redisHost;
@Value("${spring.redis.port}")
private int redisPort;
@Bean
public RedisConnectionFactory redisConnectionFactory() {
RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
redisStandaloneConfiguration.setHostName(redisHost);
redisStandaloneConfiguration.setPort(redisPort);
// 패스워드 있으면 설정
// redisStandaloneConfiguration.setPassword(redisPwd);
LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(redisStandaloneConfiguration);
return lettuceConnectionFactory;
}
@Bean
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory());
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
return redisTemplate;
}
} |
중간에 RedisTemplate Bean 등록 시 [26 Line] 에서 GenericJackson2JsonRedisSerializer() 로 셋팅하는 부분은 데이터 형태를 하나의 표준화 된 VO형태가 아니라 여러가지 형태로 공존할 수 있어서 이렇게 셋팅함.
그럼 아래와 같은 @class 데이터가 붙어서 Serializer를 통해 객체로 변경해줄 때 어떤 VO로 매핑할 지 체크한다.
{"@class":"com.example.demo.common.redis.RedisVO","key1":"value1","key2":"value2"}
※ 표준화 된 하나의 VO만 사용하면 해당 코드를 아래와 같이 변경
redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(RedisVO.class));
Redis Set/Get 사용
간단히 사용방법만 소개하기 위해서 Test 코드로 작성했다.
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
|
@RunWith(SpringRunner.class)
@SpringBootTest
public class RedisTest {
@Autowired
RedisTemplate<String, Object> redisTemplate;
@Test
public void redisBasicFunction_guide() throws JSONException {
//Given
String key = "iamkey";
String value = "iamvalue";
// redis에 set
redisTemplate.opsForValue().set(key, value);
// redis에서 get
RedisVO redisVO = (RedisVO) redisTemplate.opsForValue().get(key);
// redis에서 data delete
// redis에 해당 key를 가지고 있는지 확인
System.out.println("key 미존재");
}
}
}
|
'Programming & Solution > Java' 카테고리의 다른 글
[SpringBoot] https / http2 적용 (0) | 2020.04.21 |
---|---|
[SpringBoot] CP Connection 이슈 트러블슈팅 (0) | 2020.03.10 |
[SpringSecurity] URL 더블슬래시 허용 (1) | 2019.08.28 |
[SpringBoot] OAUTH2 설정 (0) | 2019.08.22 |
[SpringBoot] Redis 연계 (Pub/Sub) (0) | 2019.08.21 |
- Total
- Today
- Yesterday
- 스프링
- 백준
- k8s
- leetcode
- 아키텍처
- 비트코인
- CARDANO
- white paper
- kubernetes
- Spring
- gRPC
- 암호화폐
- 블록체인
- 알고리즘
- Blockchain
- architecture
- 스프링 시큐리티
- 동적계획법
- SpringBoot
- Bitcoin
- vuejs
- Bruteforce
- DP
- Vue.js
- excel parsing
- Nealford
- 사토시 나가모토
- Redis
- Java
- 카르다노
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |