this is first time using Redis database, i encounter basic problems
i’m trying to save data to Redis local server but it failed
it seems configuration has not problem but i don’t know why
api test has not failed and there’s no error messages
but practically cannot save key-value data
enter image description here
enter image description here
class RatingRedisRepository (
private val redisTemplate: RedisTemplate<String, String>,
private val objectMapper: ObjectMapper
val logger = LogManager.getLogger(RatingController::class.java)!!
fun saveRating(rating: Rating) {
val ratingJson = objectMapper.writeValueAsString(rating)
logger.info(ratingJson.toString())
redisTemplate.opsForValue().set("rating:${rating.id}", ratingJson)
fun saveRating(@RequestBody ratingDTO: RatingDTO): ResponseEntity<Any> {
val rating = ratingMapper.toEntity(ratingDTO)
logger.info(rating.toString())
ratingRedisService.saveRating(rating)
return ResponseEntity.ok().build()
class RatingMapper : Mapper<RatingDTO, Rating> {
override fun fromEntity(entity: Rating): RatingDTO = RatingDTO(
override fun toEntity(domain: RatingDTO): Rating = Rating(
<code>@Repository
class RatingRedisRepository (
private val redisTemplate: RedisTemplate<String, String>,
private val objectMapper: ObjectMapper
) {
val logger = LogManager.getLogger(RatingController::class.java)!!
fun saveRating(rating: Rating) {
val ratingJson = objectMapper.writeValueAsString(rating)
logger.info(ratingJson.toString())
redisTemplate.opsForValue().set("rating:${rating.id}", ratingJson)
}
}
//controller
@PostMapping("/save")
fun saveRating(@RequestBody ratingDTO: RatingDTO): ResponseEntity<Any> {
val rating = ratingMapper.toEntity(ratingDTO)
logger.info(rating.toString())
ratingRedisService.saveRating(rating)
return ResponseEntity.ok().build()
}
//mapper
@Service
class RatingMapper : Mapper<RatingDTO, Rating> {
override fun fromEntity(entity: Rating): RatingDTO = RatingDTO(
entity.id,
entity.user_id,
entity.movie_id,
entity.rating
)
override fun toEntity(domain: RatingDTO): Rating = Rating(
domain.id,
domain.user_id,
domain.movie_id,
domain.rating
)
}
</code>
@Repository
class RatingRedisRepository (
private val redisTemplate: RedisTemplate<String, String>,
private val objectMapper: ObjectMapper
) {
val logger = LogManager.getLogger(RatingController::class.java)!!
fun saveRating(rating: Rating) {
val ratingJson = objectMapper.writeValueAsString(rating)
logger.info(ratingJson.toString())
redisTemplate.opsForValue().set("rating:${rating.id}", ratingJson)
}
}
//controller
@PostMapping("/save")
fun saveRating(@RequestBody ratingDTO: RatingDTO): ResponseEntity<Any> {
val rating = ratingMapper.toEntity(ratingDTO)
logger.info(rating.toString())
ratingRedisService.saveRating(rating)
return ResponseEntity.ok().build()
}
//mapper
@Service
class RatingMapper : Mapper<RatingDTO, Rating> {
override fun fromEntity(entity: Rating): RatingDTO = RatingDTO(
entity.id,
entity.user_id,
entity.movie_id,
entity.rating
)
override fun toEntity(domain: RatingDTO): Rating = Rating(
domain.id,
domain.user_id,
domain.movie_id,
domain.rating
)
}
configuration file’s below
<code>@RequiredArgsConstructor
@EnableRedisRepositories(enableKeyspaceEvents = RedisKeyValueAdapter.EnableKeyspaceEvents.ON_STARTUP)
public class RedisConfig {
@Value("${spring.data.redis.host}")
@Value("${spring.data.redis.port}")
public RedisConnectionFactory redisConnectionFactory(){
return new LettuceConnectionFactory(host,port);
public RedisMessageListenerContainer redisMessageListener(RedisConnectionFactory connectionFactory) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory);
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new StringRedisSerializer());
<code>@RequiredArgsConstructor
@EnableRedisRepositories(enableKeyspaceEvents = RedisKeyValueAdapter.EnableKeyspaceEvents.ON_STARTUP)
@Configuration
public class RedisConfig {
@Value("${spring.data.redis.host}")
private String host;
@Value("${spring.data.redis.port}")
private int port;
@Bean
public RedisConnectionFactory redisConnectionFactory(){
return new LettuceConnectionFactory(host,port);
}
@Bean
public RedisMessageListenerContainer redisMessageListener(RedisConnectionFactory connectionFactory) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
return container;
}
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory);
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new StringRedisSerializer());
return template;
}
}
</code>
@RequiredArgsConstructor
@EnableRedisRepositories(enableKeyspaceEvents = RedisKeyValueAdapter.EnableKeyspaceEvents.ON_STARTUP)
@Configuration
public class RedisConfig {
@Value("${spring.data.redis.host}")
private String host;
@Value("${spring.data.redis.port}")
private int port;
@Bean
public RedisConnectionFactory redisConnectionFactory(){
return new LettuceConnectionFactory(host,port);
}
@Bean
public RedisMessageListenerContainer redisMessageListener(RedisConnectionFactory connectionFactory) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
return container;
}
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory);
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new StringRedisSerializer());
return template;
}
}
If you need any additional information, please let me know!
api test has not failed and there’s no error messages
but practically cannot save key-value data