25.Springboot 통합 redis 와 그 사용 사례
7373 단어 SpringBoot입문 에서 포기 까지
org.springframework.boot
spring-boot-starter-data-redis
2.설정
spring:
redis:
host: 192.168.10.134
port: 6379
#springboot redis,
#password: 199266
3.Springboot-data-redis 가 RedisTemplate 대상 을 자동 으로 불 러 오기 때문에 이 bean 을 등록 할 필요 가 없습니다.
하지만 기본 RedisTemplate 를 사용 하면 redis 에 직렬 화 되 어 있 으 면 key 가 됩 니 다.예 를 들 어 저장 하기 전에 key 는
"test"
이 고 redis 에 들 어가 면 key 는"\xac\xed\x00\x05t\x00\x04test"
가 된다.이것 은 RedisTemplate 가 기본적으로 제공 하 는 직렬 화 프로 토 콜 과 관련 이 있다.그것 을 우리 의 요구 에 더욱 부합 시 키 기 위해 서 우 리 는 직렬 화 협 의 를 제정 해 야 한다.여기 서 저 희 는 Springboot 가 가지 고 있 는 Jackson 을 직렬 화 프로 토 콜 로 선택 하고 구체 적 인 설정 은 다음 과 같 습 니 다.
@Configuration
public class RedisConfiguration {
@Bean
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
// Jackson2JsonRedisSerialize
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
// value key
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.setKeySerializer(jackson2JsonRedisSerializer);
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
}
4.창고 저장 인터페이스 와 그 실현 창고 저장 인터페이스
/**
* repository, ,spring repository:@NoRepositoryBean
*/
@NoRepositoryBean
public interface UserRepository {
boolean save(User user);
User findUser(Long id);
}
창고 저장 실현
@Repository("userRepositoryByRedis")
public class UserRepositoryImplByRedis implements UserRepository {
/**
* :redis RedisAutoConfiguration bean redisTemplate
* stringRedisTemplate, RedisTemplate , RedisTemplate,
* , bean
*/
@Autowired
private RedisTemplate redisTemplate;
@Override
public boolean save(User user) {
try {
redisTemplate.opsForValue().set(String.valueOf(user.getId()), user);
return true;
} catch (Exception e){
System.out.println(e.toString());
return false;
}
}
@Override
public User findUser(Long id) {
try {
return (User) redisTemplate.opsForValue().get(String.valueOf(id));
} catch (Exception e){
System.out.println(e.toString());
return null;
}
}
}
5.테스트
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
@Qualifier("userRepositoryByRedis")
private UserRepository userRepository;
@PostMapping
public boolean save(@RequestBody User user){
return userRepository.save(user);
}
@GetMapping("/{id}")
public User findUser(@PathVariable Long id){
return userRepository.findUser(id);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.