> sudo apt update
> sudo apt install lsb-release
> curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
> echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
> sudo apt update
> sudo apt install redis -y
# 다운로드 후 버전 확인
> redis-server --version
# 예시 출력
ubuntu@ubt2004:~$ redis-server --version
Redis server v=7.4.0 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=ca02b5915bf0d9c6
# redis 자동실행 설정
> sudo systemctl enable redis-server
# redis 실행
> sudo systemctl start redis-server
여기서
Failed to start redis-server.service: Unit redis-server.service is masked.
이런 로그가 뜨면서 실행이 안될 수 있다.
이 때는
> sudo systemctl unmask redis-server.service
위 명령어로 unmask 해준 뒤 실행한다.
/etc/redis/redis.conf
경로에 있는 redis
설정 파일을 일부 수정해준다.
보안 설정
# redis.conf
...
# requirepass foobared
...
위 라인을 찾아 주석을 제거하고 원하는 비밀번호를 입력한다.
# redis.conf
...
requirepass your_secure_password
...
원격 접근 설정
# redis.conf
...
bind 127.0.0.1 ::1
...
위 라인을 찾아 접속을 허용하고자 하는 ip 주소를 추가해준다.
# redis.conf
...
bind 0.0.0.0 ::0 # 모든 IP 허용
...
# redis.conf
...
bind 127.0.0.1 your.server.ip.address # 특정 IP만 허용
...
지속성 설정
# redis.conf
...
# AOF 기능 사용 여부 (yes: 사용, no: 사용안함)
appendonly yes
# AOF 파일 동기화 빈도 설정 (always: 항상, everysec: 매 초마다, no: 사용안함)
appendfsync everysec
...
위 라인을 찾아서 사용하고자 하는 속성에 맞게 수정한다.
Redis
는RDB
와AOF
라는 두가지 지속성 옵션을 제공한다.Redis
자체가 메모리에 데이터를 저장하는 방식이기 때문에
AOF
란Append Only File
의 약자로 모든 쓰기 연산을 로그에 기록하는 기능이다.다른 방법으로는
RDB (Redis Database Backup)
가 있는데, 특정 간격으로 스냅샷을 저장하는 기능이다.
메모리 설정
# redis.conf
...
maxmemory 256mb
maxmemory-policy allkeys-lru
...
위 라인을 찾아서 사용하고자 하는 속성에 맞게 수정한다.
maxmemory
속성은 Redis
에게 할당할 최대 메모리 값을 설정한다.
maxmemory-policy
속성은 최대 메모리 값에 도달한 이후 데이터를 어떻게 처리할지에 대한 옵션이다.
noeviction: 새로운 쓰기 작업이 에러를 반환한다.
allkeys-lru: 가장 오랫동안 사용되지 않은 키를 삭제한다.
volatile-lru: 만료 설정이 있는 키 중에서 가장 오랫동안 사용되지 않은 키를 삭제한다.
저장 및 재시작
# 위 내용 작성 완료 후 저장 & 재시작
> sudo systemctl restart redis-server.service
로컬에서 테스트
# 로컬 터미널에서 `redis-cli` 명령어로 redis 접속
> redis-cli
# 4번에서 비밀번호를 설정한 경우 비밀번호 입력
> AUTH your_secure_password
# 키-값 설정
> SET testkey "Hello, Redis!"
# 값 가져오기
> GET testkey
# 출력
"Hello, Redis!"
원격에서 테스트
# 로컬 터미널에서 `redis-cli` 명령어로 redis 접속
> redis-cli -h 원격.서버.IP.주소 -p 포트 -a 비밀번호
# 키-값 설정
> SET testkey "Hello, Redis Remote!"
# 값 가져오기
> GET testkey
# 출력
"Hello, Redis Remote!"
만약 원격에서 연결이 안된다면 방화벽 상태를 확인하자.
# 방화벽 상태 확인 > sudo ufw status # 요청 보내는 IP에서 6379 포트 접근 허용 > sudo ufw allow from your.client.ip.address to any port 6379