본문 바로가기

DB/Redis (레디스)

EC2에 Redis 설치 데이터 생성 및 조회 with BastionHost

728x90
반응형

# 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 접속 방법

 

Redis Desktop Manager 접속 방법

# 일단 정식 버전의 Redis Desktop Manager 는 유료이므로 사용이 불가능하다. 그래서 Another Redis Desktop Manager를 사용하여 접속을 해보자. 일단 설치는 인터넷에서 다운받아서 설치. 설치 후 커넥션 정보

may9noy.tistory.com

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을 활용하여 외부에서 접근을 하는 방법을 생각해 봐야겠다.

728x90
반응형