지석이의 일기
AWS EC2에서 Redis 설치하고 Spring Boot에서 사용하기 본문
1. 보안 그룹 설정하기
Redis 기본 포트 6379 허용하려면 인바운드 규칙에 다음 추가필요
-
- Port Range: 6379
- Type: Custom TCP Rule
- Source: 0.0.0.0/0
2. Redis 설치하기
Redis 프로그램을 설치하자. 방법은 3가지인데 (예전만해도 그냥 epel-release에서 다운받았다...)
- epel-release 로 다운받아 설치하기
sudo yum install -y epel-release
sudo yum install -y redis
- amazon-linux-extras 에서 다운받아 설치하기.
sudo amazon-linux-extras install redis6 -y
- 진짜 Redis 홈페이지에서 rpm 파일을 받아 수동으로 설치하기 (위에 다 안되면 많이 귀찮아진다.)
wget을 설치하고, tar.gz 파일을 받아, 서버에서 직접 설치하는 방법이다.
## wget 기능 및 tcl (make test)설치
sudo yum install -y gcc make wget
sudo yum install -y tcl
## Redis 파일 다운로드 (기간에 따라 404 없을수도있음)
wget http://download.redis.io/releases/redis-7.0.0.tar.gz
## 압축 풀기
tar xzf redis-7.0.0.tar.gz
cd redis-7.0.0
make
## 설치
sudo make test
sudo make install
3. Redis 설정
Redis 설정 파일 복사하기
sudo mkdir /etc/redis
sudo cp redis.conf /etc/redis
설정 복사 붙혀 넣기
## 아래 파일을 열고
sudo vi /etc/systemd/system/redis.service
## 아래 붙혀넣기
[Unit]
Description=Redis In-Memory Data Store
After=network.target
[Service]
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always
[Install]
WantedBy=multi-user.target
4. Redis 실행
## Redis 서비스 시작하기
sudo systemctl start redis
## Redis 서비스 자동 시작 설정하기
sudo systemctl enable redis
## Redis 상태 확인하기
sudo systemctl status redis
redis.conf 설정 목록
Redis 설정은 /etc/redis.conf에서 변경할 수 있다.
설정을 변경한 후에는 Redis 서비스를 재시작해야 변경 사항이 적용됨.
Redis 설정 파일의 주요 항목들
Redis 설정 파일 안에는 많은 설정 항목들이 있음.
- bind: Redis가 특정 IP 주소를 듣도록 설정. 기본적으로 localhost를 사용. 전체 다 허용시 0.0.0.0으로 수정 *보안취약해짐*
- port: Redis가 사용할 포트를 설정. 기본값은 6379
- timeout: 클라이언트와의 아이들 상태(idle)가 이 시간을 초과하면 연결이 끊어짐.0으로 설정하면 타임아웃이 없어짐.
- loglevel: Redis그의 레벨을 설정. "debug", "verbose", "notice", "warning" 중 하나를 선택할 수 있음.
- logfile: Redis 로그 파일의 위치를 설정.
- databases: Redis가 제공할 데이터베이스의 수를 설정. 기본값은 16.
- save: 디스크에 스냅샷을 저장할 시점을 설정합니다. 예를 들어, save 900 1은 900초(15분) 동안 1회 이상의 변경이 발생하면 스냅샷을 저장하라는 의미.
- dir: 스냅샷 파일이 저장될 디렉토리를 설정.
- maxmemory: Redis가 사용할 수 있는 최대 메모리 크기를 설정. 이 크기를 초과하면, maxmemory-policy에 따라 처리.
- maxmemory-policy: 메모리 한도 초과 시 어떤 키를 제거할지 정책을 설정.
- requirepass : 다른 ip에서 redis접근이 가능하면 여러 외부에서 접근해서 이상한 데이터를 셋팅할것임. 외부 오픈이 되어 있을경우 비밀번호를 셋팅해야함.
sudo systemctl restart redis
5. Spring Boot 애플리케이션에서 Redis 설정하기
Spring Boot 애플리케이션에서 Redis 설정하기
Spring Boot에서 Redis를 사용하려면, 먼저 spring-boot-starter-data-redis 의존성을 추가해야 함.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
Gradle을 사용하는 경우.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
}
application.yml
spring:
redis:
host: localhost # Redis 서버 주소
port: 6379 # Redis 포트 번호
password : RHXNLaeet # redis.config에 requirepass 셋팅시
5. Spring Boot 애플리케이션에서 Redis 사용하기
이제 Spring Boot 애플리케이션에서 StringRedisTemplate나 RedisTemplate를 이용해 Redis를 사용할 수 있음
@Autowired
private StringRedisTemplate redisTemplate;
public void someMethod() {
ValueOperations<String, String> ops = redisTemplate.opsForValue();
ops.set("key", "value");
System.out.println("Found key " + ops.get("key"));
}
서버에서 직접 Redis 활용해보기
redis-cli를 통해 Redis 서버에 접속.
redis-cli
접속이 성공하면, keys * 명령어를 이용해 모든 키를 볼 수 있음.
keys *
위 명령어는 Redis 서버에 저장된 모든 키의 리스트를 반환.
만약 특정 패턴에 맞는 키만 보고 싶다면, keys 명령어에 원하는 패턴을 넣을 수 있음.
예를 들어, "user*" 패턴을 가진 키를 보고 싶다면 keys user*와 같이 입력하면 됨.
특정 키의 값을 보고 싶다면, get 명령어를 사용함. 예를 들어, "myKey"라는 키의 값을 보고 싶다면 아래와 같이 입력.

'Server' 카테고리의 다른 글
GCP에서 서버 호스팅 받기 (0) | 2024.10.17 |
---|---|
React 프로젝트 클라우드 서버에 배포 (1) | 2024.03.17 |
Nginx에 https 을 연결 - letsencrypt (0) | 2023.06.12 |
하나의 리눅스 서버에 WEB서버를 추가해보자 (nginx) + 8080포트 tomcat (0) | 2023.05.11 |
AWS에 나만의 계정을 만들어보자. 키페어 (.pem)없이 접속하는 계정 만들기 (0) | 2021.06.06 |