반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- log error
- java
- springboottest
- yum install java
- mac os git error
- xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools)
- tls프로토콜확인
- AWS CLI
- ssl이란?
- java version
- OpenFeign
- xcrun: error: invalid active developer path
- easy
- java 1.8 11
- Java 1.8
- java 여러개 버전
- error
- mysql executequery error
- ssl프로토콜확인
- java 11
- java 버전 변경
- No tests found for given includes
- statement.executequery() cannot issue statements that do not produce result sets.
- LeetCode
- Medium
- 스프링부트테스트
- parse
- springboot
- aws
- JUnit
Archives
- Today
- Total
쩨이엠 개발 블로그
[ Redis ] Redis 환경 간단하게 구축하기 본문
728x90
반응형
Redis 란 Key-Value 형태를 띄고 있는 In Memory 기반의 NoSQL DBMS이다.
보통 캐싱 / 세션관리 등으로 쓰고 있는데 내 경우는 임시데이터를 잠시 저장하고 그걸 빠르게 가져오기 위해 사용하였다.
의존성 환경
- Spring boot 2.2.5 RELEASE
- Spring Boot Data Redis 2.2.5 RELEASE
- Java 11 (8도 상관없음)
plugins {
id 'org.springframework.boot' version '2.2.5.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'java'
}
sourceCompatibility = '11'
repositories {
mavenCentral()
}
dependencies {
...
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'org.modelmapper:modelmapper:2.3.6'
...
}
설정
RedisConfig.java
@Configuration
@RequiredArgsConstructor
public class RedisConfig {
private final ObjectMapper objectMapper;
private final RedisProperties redisProperties;
@Bean
public ModelMapper modelMapper(){
ModelMapper modelMapper = new ModelMapper();
modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
return modelMapper;
}
@Bean
public RedisConnectionFactory redisConnectionFactory() {
return new LettuceConnectionFactory(redisProperties.getHost(), redisProperties.getPort());
}
@Bean
public RedisTemplate<String, Object> redisTemplate() {
final RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory());
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new GenericJackson2JsonRedisSerializer(objectMapper));
return template;
}
}
RedisProperties 은 application.yml 에서 설정한 host와 port를 사용한다
application.yml
spring:
redis:
port: 6379
host: iot-redis.amazonaws.com
...
Redis 사용
RedisUtils.java
@Component
@RequiredArgsConstructor
public class RedisUtils {
private final RedisTemplate<String, Object> redisTemplate;
private final ModelMapper modelMapper;
public void put(String key, Object value, Long expirationTime){
if(expirationTime != null){
redisTemplate.opsForValue().set(key, value, expirationTime, TimeUnit.SECONDS);
}else{
redisTemplate.opsForValue().set(key, value);
}
}
public void delete(String key){
redisTemplate.delete(key);
}
public <T> T get(String key, Class<T> clazz){
Object o = redisTemplate.opsForValue().get(key);
if(o != null) {
if(o instanceof LinkedHashMap){
return modelMapper.map(o, clazz);
}else{
return clazz.cast(o);
}
}
return null;
}
public boolean isExists(String key){
return redisTemplate.hasKey(key);
}
public void setExpireTime(String key, long expirationTime){
redisTemplate.expire(key, expirationTime, TimeUnit.SECONDS);
}
public long getExpireTime(String key){
return redisTemplate.getExpire(key, TimeUnit.SECONDS);
}
}
- redisTemplate.opsForValue().get(key) : key 값으로 value 를 가져온다
- redisTemplate.opsForValue().set(key, value, time, unit) : key값으로 value를 저장한다 만약 만료 시간을 지정하는 경우엔 time 과 단위를 함께 세팅한다
- redisTemplate.hasKey(key) : 키의 존재유무를 return 한다
- redisTemplate.delete(key) : key값에 대한 데이터를 삭제한다
728x90
반응형
'개발 > Spring' 카테고리의 다른 글
[ Swagger ] @Schema LocalDateTime Format (2) | 2022.04.06 |
---|---|
[ JUnit ] JUnit Test (0) | 2021.01.20 |
[ Spring boot] Could not resolve all files for configuration compileClasspath (0) | 2020.08.24 |
Maven pom to gradle (0) | 2020.07.13 |
[ Spring ] spring init 초기화 메소드 @PostConstruct (0) | 2020.07.01 |
Comments