Database/Redis
[DB] Redis 사용법
dh_0e
2024. 6. 19. 23:21
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를 설치한다.
[Redislabs] 📚 Redis를 클라우드로 사용하자
Redis 클라우드 MySQL을 사용하기 위해서 워크벤치를 설치했던 것 처럼, 레디스를 사용하려면 레디스 데이터베이스를 설치해야 한다. 직접 서버 컴퓨터에 직접 설치할 수도 있지만, 레디스를 호스
inpa.tistory.com
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);