Redis?
Redis는 인메모리 데이터 구조 저장소(In-Memory Data Structure Store)로서, 오픈 소스 기반의 고성능 키-값 저장 시스템. Redis는 Remote Dictionary Server의 약자이며, 다양한 데이터 구조를 지원하고 메모리 기반 데이터 저장을 통해 빠른 데이터 액세스를 제공.
Redis의 특징 | |
---|---|
자료구조 | Redis는 기본적으로 키-값 저장소이지만, 다른 데이터 구조 사용가능. 문자열(String), 해시(Hash), 리스트(List), 세트(Set), 정렬된 세트(Sorted Set) 등. |
속도 | Redis는 메모리에 데이터를 저장하고 액세스하기 때문에 매우 빠른 응답 시간제공 |
지속성 | Redis는 디스크에 데이터를 저장할 수도 있어, 데이터를 영속적으로 보관할 수 있음. 즉, 서버 재시작 후에도 데이터가 유지될 수 있음 |
분산 시스템 | Redis는 여러 서버 간에 데이터를 분산하고 복제할 수 있는 기능을 제공. 이를 통해 데이터의 가용성과 확장성을 향상가능. |
다양한 기능 | Redis는 데이터 구조와 관련된 다양한 연산을 지원합. 예를 들어 집합 연산, 정렬된 집합 연산, 비트맵 연산 등 |
Pub/Sub 메시징 | Redis는 발행-구독(Publish-Subscribe) 메시징 패턴을 지원. 이를 통해 메시지를 발행하고 구독하는 기능을 구현 가능. |
Redis는 다양한 애플리케이션에서 캐싱, 세션 관리, 메시징 시스템 등으로 활용. 또한, 데이터베이스의 부하 분산, 실시간 분석, 잠금 메커니즘 등에도 사용될 수 있음. 간단한 설정과 높은 성능으로 인기 있는 데이터 저장 시스템 중 하나임.
Redis 사용
Redis 다운로드 경로(Win/Linux/Mac)
https://redis.io/docs/getting-started/installation/
Redis 간단한 명령어 | |
---|---|
$ set myKey myValue |
키, 값 을 쌍으로 저장 |
$ get myKey |
데이터 조회 |
$ del myKey |
데이터 삭제 |
$ keys * |
Redis의 모든 키 조회 (운영환경에서는 거의 안씀) |
Redis 비밀번호 설정
Terminal
### Spring에 Redis 설정하기
**1.** build.gradle -> 의존성 추가
```xml
dependencies {
...
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
...
}
2. application.yml 추가
redis:
host: localhost //상황에 맞춰서..
port: 6379 //상황에 맞춰서..
3. Redis 관련 Config Bean 생성
@RequiredArgsConstructor
@Configuration
public class CashConfig {
@Value("${spring.redis.host")
private String host;
@Value("${spring.redis.port")
private int port;
@Bean
public CacheManager redisCacheManager(RedisConnectionFactory redisConnectionFactory){
RedisCacheConfiguration conf = RedisCacheConfiguration.defaultCacheConfig()
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()));
return RedisCacheManager.RedisCacheManagerBuilder
.fromConnectionFactory(redisConnectionFactory)
.cacheDefaults(conf)
.build();
}
@Bean
public RedisConnectionFactory redisConnectionFactory(){
// RedisClusterConfiguration conf = new RedisClusterConfiguration(); -> cluster 사용시
RedisStandaloneConfiguration conf = new RedisStandaloneConfiguration();
conf.setHostName(this.host);
conf.setPort(this.port);
return new LettuceConnectionFactory(conf);
}
}