일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- html5
- pm2
- 더 흔한 색칠 타일 문제
- map
- Github
- localstorage
- ccw 알고리즘
- ucpc 2024 예선 e번
- 백준 32029번
- PROJECT
- Express.js
- ERD
- 게임 서버 아키텍처
- branch
- 지금 자면 꿈을 꾸지만
- ucpc 2023 예선 d번
- 그리디
- string
- Prisma
- router
- JavaScript
- insomnia
- HTTP
- MongoDB
- Next
- 백준 28303번
- MySQL
- 자바스크립트
- 백준 32028번
- ucpc 2023 예선 i번
Archives
- Today
- Total
dh_0e
[DB] Redis 사용법 본문
Redis란?
- Remote Dictionary Server의 약자로 Key-Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈소스 기반 비관계형 데이터베이스(NoSQL) 관리 시스템
- In-memory 기반의 데이터 처리 및 저장을 제공하여 속도가 빠르지만 서버가 꺼지면 저장된 모든 데이터가 사라짐
- 보편적으로 데이터의 휘발성 때문에 메인 데이터베이스보다는 보조 데이터베이스로 사용함
- 데이터에 만료 시간을 지정하여 만료 시간이 지나면 해당 데이터를 삭제하며, 메모리가 꽉 찼을 때도 LRU(Least Recently Used) 알고리즘에 의해 데이터가 사라짐
Redis 명령어
- 아래 명령어를 통해 Key-Value 구조 데이터들을 생성/읽기/갱신/삭제할 수 있음
명령어 | 기능 |
SET | 데이터 저장 |
GET | 데이터 조회 |
RENAME | 데이터 수정 |
RANDOMKEY | 하나의 key를 랜덤하게 검색 |
KEYS | 모든 key값을 조회 |
EXISTS | key 존재 여부 확인 |
DEL | key를 삭제 |
FLUSHALL | DB의 모든 key 삭제 |
Redis 클라우드 서버 열기
- Redis는 로컬에 설치할 수 있고, 클라우드로 사용할 수 있음
- 관리나 협업 측면에서 클라우드가 편리하기 때문에 클라우드에 redis를 설치한다.
Redis EC2 서버 열기
- Git bash에서 EC2 콘솔로 연결한 뒤 우분투 환경에서 진행한다.
sudo apt-get update
sudo apt install redis-server #redis-server 설치
sudo systemctl status redis-server #redis-server 상태 확인
sudo systemctl stop redis-server #redis-server 닫기
sudo systemctl start redis-server #redis-server 열기
sudo vi /etc/redis/redis.conf #redis-server 설정 파일 접근
redis-cli #redis 터미널에 접근
- EC2의 인스턴스에서 인바운드 규칙에 redis 기본 포트인 6379를 0.0.0.0/0(모든 IPv4 접근 허용)으로 추가해준다.
- redis conf 파일에 모든 ip에 대하여 접속이 가능하게 bind 설정을 한다.
- 설정이 완료되면 "sudo systemctl restart redis-server" 명령어로 서버를 재시작하고 redis-cli에 접속해준다.
- 이제 명령어를 입력하려면 "auth <password>"로 패스워드를 입력하고 사용해야 한다.
Node.js에서 redis 사용
Node.js에서 Redis에 접근하기 위해 패키지를 설치하고 코드를 작성한다.
yarn add redis
code example)
import { createClient } from 'redis';
async function main() {
// Redis 클라이언트 생성
const client = createClient({
url: 'redis://<your-ec2-public-ip>:6379' // EC2 인스턴스의 퍼블릭 IP 주소
});
client.on('error', (err) => {
console.error('Error connecting to Redis server:', err);
});
// Redis 서버에 연결
await client.connect();
console.log('Connected to Redis server');
try {
// 예제: Redis에 데이터 설정
await client.set('key', 'value');
console.log('Set key:', 'value');
// 예제: Redis에서 데이터 가져오기
const value = await client.get('key');
console.log('Get key:', value);
} catch (err) {
console.error('Error interacting with Redis:', err);
} finally {
// Redis 클라이언트 종료
await client.disconnect();
console.log('Disconnected from Redis server');
}
}
main().catch(console.error);