heroku 설치
$ sudo snap install heroku --classic
헤로쿠 버전확인
$ heroku --version
헤로쿠 로그인
$heroku login -i
-> (heroku 로그인, 비밀번호 API Key를 사용해야함 API Key는 heroku 홈페이지의 Account Settings에 들어가서 확인할 수 있다.)
헤로쿠 url 확인
$ heroku config -a {redis이름}
-> (url 확인, spring boot로 접속할때 REDIS_URL을 사용)
헤로쿠 redis 접속
$ heroku redis:cli -a {redis이름}
-> 접속
heroku 명령어
keys * //전체 데이터 보여줌
get USER:012 //get key이름 하면 value 보여줌
FLUSHALL // 데이터 전부삭제
build.gradle
implementation("org.springframework.boot:spring-boot-starter-data-redis")
application.yml
spring:
redis:
host: {REDIS_URL}
RedisConfig.java
@Configuration
public class RedisConfig {
@Value("${spring.redis.host}")
private String host;
@Bean //ConnectionFactory 빈으로 등록
public RedisConnectionFactory redisConnectionFactory() {
//RedisProperties 에서 application.properties에서 설정한 URL을 가져온다
RedisURI redisURI = RedisURI.create(host);
// URI를 가지고 Configuration을 만들어 준 다음에
// Connection을 만들어주는 factory를 만들어 factory를 반환한다
org.springframework.data.redis.connection.RedisConfiguration configuration = LettuceConnectionFactory.createRedisConfiguration(redisURI);
//Lettuce는 전통적인 제디스보다 나중에 나왔고 성능이 더 좋아서 사용한다
LettuceConnectionFactory factory = new LettuceConnectionFactory(configuration);
// Initializing 된다
factory.afterPropertiesSet();
return factory;
}
@Bean
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new StringRedisSerializer());
redisTemplate.setConnectionFactory(redisConnectionFactory());
return redisTemplate;
}
@Bean
public StringRedisTemplate stringRedisTemplate() {
final StringRedisTemplate stringRedisTemplate = new StringRedisTemplate();
stringRedisTemplate.setKeySerializer(new StringRedisSerializer());
stringRedisTemplate.setValueSerializer(new StringRedisSerializer());
stringRedisTemplate.setConnectionFactory(redisConnectionFactory());
return stringRedisTemplate;
}
}
RedisController.java
@RequiredArgsConstructor
@RestController
public class RedisController {
private final RedisService redisService;
// @PostMapping("/test")
// public void test(@RequestBody ChatMessage chatMessage) {
// redisPubService.sendMessage(chatMessage);
// }
@PostMapping("/test")
public String test(@RequestBody RedisRequestDto requestDto) {
String value = redisService.redisString(requestDto);
return "벨류는 " + value;
}
}
RedisRequestDto.java
@Getter
@NoArgsConstructor
public class RedisRequestDto {
private String name;
private String value;
}
RedisService.java
@Slf4j
@RequiredArgsConstructor
@Service
public class RedisService {
private final RedisTemplate<String, Object> redisTemplate;
public String redisString(RedisRequestDto requestDto) {
ValueOperations<String, Object> operations = redisTemplate.opsForValue();
operations.set(requestDto.getName(), requestDto.getValue());
String redis = (String)operations.get(requestDto.getName());
return redis;
}
}
postman을 통해 테스트 해보면 데이터가 잘 들어와 있는걸 확인 할 수 있다.