# EC2에 Redis를 설치하고 Redis Desktop Manager를 설치 후 ssh 터널링을 통해 Redis에 접근
1. EC2에 Redis 설치
# 업데이트
apt-get update
# 설치
apt install redis-server
2. Redis 설정 편점
# 설정 편집
# 상단의 main restricted 2개편집, 각각 universe multiverse 입력 후 저장, 아래의 부가설명 참조
vim /etc/apt/sources.list
# 저장된 경로의 redis.conf 파일을 vim으로 열고 편집
ex) vim /etc/redis/redis.conf
# redis.conf
maxmemory 500m # 최대메모리 설정
maxmemory-policy noeviction allkeys-lru # 초과시 가장 안 쓰인 거 부터 제거하는 정책.
bind 0.0.0.0 ::1 # 모든 IP 접근허용처리
requirepass {비밀번호 지정}
port 6379 # 포트 설정
# 설정 변경 후 Redis 서버 재시작
sudo service redis-server restart
- 설정부분 코드
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu/ bionic main restricted universe multiverse
# deb-src http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu/ bionic main restricted
## Major bug fix updates produced after the final release of the
## distribution.
deb http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu/ bionic-updates main restricted
- 부가 설명
3. Redis CLI 접속
# Redis CLI 접속
redis-cli
4. Redis 서비스 상태 확인 및 관련 명령어
# 실행중단
sudo service redis-server stop
# 실행
sudo service redis-server start
# 상태확인
systemctl status redis-server.service
# 재실행
sudo systemctl restart redis-server.service
# 서버 재 시작시 자동 재실행
sudo systemctl enable redis-server.service
5. BastionHost에서 Redis 접근하기
- BastionHost로 이동한다.
BastionHost에서 redis-cli를 입력하면 아래와 같이 명령어를 찾을수 없다고 나온다.
아래의 리소스를 설치한다.
apt install redis-tools
- redis 접근하기
private 환경에 있는 redis를 접근하는 방법은 간단하다.
redis-cli -h {private_ip_address} -p {redis_port_number}
redis-cli -h 10.10.10.10 -p 6379
- 키 값 테스트하기
* 만약 아래와 같이 에러가 발생하면, AUTH 위에서 설정한 비밀번호 입력
(error) NOAUTH Authentication required.
AUTH {비밀번호}
- 키 값 저장 및 검색
10.10.10.10:6379> set name "zzanggu"
OK
10.10.10.10:6379> get name
"zzanggu"
6. Redis Desktop Manager tool을 활용한 접속
2022.12.06 - [DB/Redis (레디스)] - Redis Desktop Manager 접속 방법
7. error 발생 시 해결
- 에러내용 : Failed to start Advanced key-value store.
Failed to start Advanced key-value store.
- 일단 에러를 확인하자
journalctl -f -u {서비스 이름}
journalctl -f -u redis-server
- 에러를 확인하면 아래와 같다. 에러 내용을 보면 >>> 'maxmemory-policy noeviction allkeys-lru' 문제라고 표시하고 있다 해당 정보를 redis.conf 파일에서 주석처리 해주면 된다.
redis-server[6021]: >>> 'maxmemory-policy noeviction allkeys-lru'
redis-server[6021]: wrong number of arguments
systemd[1]: redis-server.service: Main process exited, code=exited, status=1/FAILURE
systemd[1]: redis-server.service: Failed with result 'exit-code'.
systemd[1]: Failed to start Advanced key-value store.
systemd[1]: redis-server.service: Scheduled restart job, restart counter is at 5.
systemd[1]: Stopped Advanced key-value store.
systemd[1]: redis-server.service: Start request repeated too quickly.
systemd[1]: redis-server.service: Failed with result 'exit-code'.
systemd[1]: Failed to start Advanced key-value store.
# redis 문법은 아래와 같다.
[모든 key를 조회]
keys *
[set]
데이터를 저장할 때에는 set 명령을 사용한다.
set key value
ex) set 1 “sample”
[get]
데이터를 검색할 때에는 get 명령을 사용한다.
get key
ex) get 1
[rename]
저장된 key 값을 변경할 때에는 rename 명령을 사용한다.
rename key newkey
ex)rename 1 “sample”
[keys]
저장된 모든 키를 검색할때 key 명령을 사용한다.
keys pattern
keys * //모든키 검색
keys s* //s로 시작하는 모든 키 검색
keys *2 //2로 끝나는 모든 키 검색
[randomkey]
저장된 key 중에 하나의 랜덤한 key를 검색할 때 randomkey 명령을 사용한다.
randomKey
[exists]
검색 하려는 key가 존재하는지 여부를 확인할때 exists 명령어를 사용한다.
반환되는 값이 1이면 존재하는 키값이며, 0이면 존재하지 않는 키값이다.
exists key
ex) exists 1
[strlen]
검색하려는 key의 value 길이를 확인할때 strlen 명령을 사용한다.
strlen key
ex)strlen 2
[flushall]
현재 저장되어 있는 모든key를 삭제 할 때에는 flushall 명령을 사용한다.
flushall
[setex]
데이터를 입력할때 일정 시간이 지나 자동으로 삭제하는 명령은 setex 이다. 시간 단위는 초(second)이다. 데이터 입력후 ttl key를 사용하면 삭제 되기 까지의 시간을 확인할 수 있다.
setex key second value
ex) setex 1 10 “10 second)
[mget / mset]
여러개의 key와 value를 한번에 검색/저장할때에는 mget / mset 명령어를 사용한다. mset 명령어 사용시 데이터가 입력 순서대로 저장된다는 보장은 없다.
mset key value key value
ex) mset 1 “data1” 2 “data2” 3 “data3”
mget key key key
ex) mget 1 2 3
[append]
현재 value 값에value를 추가할때에는 append 명령어를 사용한다. 추가하려는 value에 첫 공백이 없을 경우 기존의 값 앞 부분에 추가가 되면 공백이 있을경우 기존 값의 뒷 부분에 추가 된다.
append key value
ex) append 1 “add data1”
ex) append 1 “data 2”
[incr / decr]
특정 key 값의 value 값에 대한 증가 또는 감소 값을 가져올때 incr / decr 명령을 사용한다.
incrby key
ex) incr 1
ex) decr 1
ex) incrby 1 10
ex) decrby 1 50
[save]
현재 입력되어 있는 key, value 값을 파일러 저장할 때에는 save명령어를 사용한다. Save 명령으로 저장된 데이터는 Redis 폴더의 dump.rdb파일로 생성된다.
save
- private 망에 존재하는 Redis를 BastionHost에서 접속하여 직접 데이터를 생성 및 조회 하는 과정에 대해서 알아 보았다.
- 다음에는 client tool을 활용하여 외부에서 접근을 하는 방법을 생각해 봐야겠다.
'DB > Redis (레디스)' 카테고리의 다른 글
예제 애플리케이션에 Login시 Redis와 연동되도록 해보자 (0) | 2023.08.02 |
---|---|
Springboot 백엔드 세션을 Redis 서버에 저장하기 with gradle (0) | 2023.08.02 |
Redis Desktop Manager 접속 방법 (0) | 2022.12.06 |