Redis
1. 개념
● 정의
○ Key-Value 값 기반의 In-Memory 데이터 저장소
○ 캐시(Cache) 서버
● 사용 목적
○ 사용자가 늘어나면서 발생하면서 발생하는 DB 부하 분산 (같은 요청(Request 혹은 Transaction)에 대한 처리)
■ 캐시(Cache) : 한 번 읽어온 데이터를 임의의 공간에 저장하여 다음에 읽을 때 빠르게 결과값을 받을 수 있도록 도와주는 공간
● 특징
○ 하드 디스크가 아닌 메모리에서 데이터 처리
○ Query 없이 캐싱된 데이터를 Return 받음 (빠른 속도)
○ Cache 기능
○ 하나의 스레드 사용(Single Threaded). 하나의 명령어만 실행가능
○ 설정한 메모리 한계를 넘어갈 수 없음
● 데이터 구조(Data Collection)
○ String
■ 단순 Key-Value 문자열 매핑 형식
○ Lists
■ Array 형식
○ Sets
■ 순서 없는 Strings 데이터 집합. 중복된 값은 하나로 처리
○ Sorted Sets
■ 순서를 지정할 수 있는 Sets 형식 (정렬에는 Score 활용)
○ Hashes
■ 복수의 Key-Value 데이터를 가진 Object 형식
● 주 용도
○ 캐시 데이터 저장
○ 인증 토큰 저장
○ Ranking Board
● 심화 개념
○ Master / Slave Replication (데이터 이중화, Read 분산)
■ Master Redis : 읽기/쓰기 권한
■ Slave Redis : 읽기 권한
● Ref : https://brunch.co.kr/@jehovah/20
2. 설치
# 패키지 관리 툴 최신화
sudo apt-get update
sudo apt-get upgrade
# 설치
sudo apt-get install redis-server
# 버전확인
redis-server --version
# 메모리 설정
sudo vi /etc/redis/redis.conf
>>>
maxmemory 256mb # 최대 사용 메모리
maxmemory-policy allkeys-lru # 메모리 초과 사용 시, 가장 오래된 데이터 삭제 옵션
# 포트 설정 (default = 6379)
sudo vi /etc/redis/redis.conf
>>>
port [포트번호] # 주석제거 후 값
# Redis 재시작
sudo systemctl restart redis-server.service
# 실행확인 (기본 포트 = 6379)
netstat -tnlp | grep 6379
3. 접속
# cli 실행
redis-cli
# 테스트
set [키값] [벨류값]
get [키값]
keys *[검색어]*
4. 외부접속 허용
# vi 편집
sudo vi /etc/redis/redis.conf
>>>
# bind 127.0.0.1을 변경
bind 0.0.0.0
# Redis 재시작
sudo systemctl restart redis-server.service
# 접속정보 확인 (0.0.0.0)
netstat -tnlp | grep 6379
# 외부접속 테스트 (비밀번호 설정 및 미설정 명령어)
redis-cli -h [Redis 서버 IP] -p [Redis 포트]
redis-cli -h [Redis 서버 IP] -p [Redis 포트] -a [비밀번호]
5. 비밀번호 설정
# vi 편집
vi /etc/redis.conf
>>>
requirepass [MyPassword]
# 암호화된 비밀번호가 필요한 경우 아래 명령어로 생성가능
echo "MyPassword" | sha256sum
6. 상태값 확인
레디스 상태 확인
$ sudo systemctl status redis-server
레디스 상태
정상
Active: active (running)
비정상 (문제 됐던 상태)
Active: deactivating(stop-sigterm)
7. 에러 로그 (추가 발견시 추가 예정)
error log
Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
해결방법
$ sudo systemctl status redis-server
Main pid id 값 확인
$ kill -9 {pid id 값}
*상태 확인 후 active 상태가 아니면 redis-server 다시 시작해 주기
레디스 안되면 상태값 확인 후 active 상태로 만들어주세요
'서버작업 > Redis' 카테고리의 다른 글
Redis 시작 및 기초 문법 (0) | 2022.07.12 |
---|