- NoSQL 데이터베이스 중 하나이며 오픈소스 소프트웨어입니다. 주요한 특징은 ‘키-값(Key-Value)’ 형태로 데이터를 저장하고 이 데이터를 ‘인-메모리 데이터 저장소’에 저장합니다.
- ‘키-값(Key-Value)’ 형태로 데이터를 저*을 하며 ‘다양한 종류의 값’을 지정 가능합니다. 값으로는 문자열, 리스트, 셋, 정렬된 셋, 해시 등을 지원합니다. - ‘인 메모리 데이터 저장소’를 사용하기에 서버의 메인 메모리에 모든 데이터를 저장하므로, 디스크 I/O를 거치는 다른 데이터베이스 시스템보다 훨씬 빠른 성능을 보여줍니다. - 메모리에 저장되는 데이터 베이스는 디스크에 저장하여 휘발성으로 사용되는 데이터를 영구적으로 저장하는 기능을 제공하여 서버가 다운되더라도 데이터를 복구할 수 있습니다. - 주로 데이터베이스, 캐시, 메시지 브로커 등 다양한 용도로 사용될 수 있습니다.
- ‘Not Only SQL’ 또는 ‘Non-Relational SQL’이라는 의미를 가지며 관계형 데이터베이스 관리 시스템(RDBMS)이 아닌 다른 형태의 데이터 저장소를 의미하며 스키마가 없거나 유연한 스키마를 가지고 있어 데이터 구조가 고정되어 있지 않습니다. 이로 인해 다양한 형태의 데이터를 저장하고 관리할 수 있습니다. - NoSQL은 대용량 분산 데이터 처리를 위해 개발되었으며 데이터의 구조적 유연성과 확장성을 제공합니다.
💡 Redis 서버를 내리고 다시 서버를 올리면 데이터가 모두 사라질까? - Redis는 기본적으로 인-메모리 데이터 구조 저장소이기 때문에, 서버가 종료되면 메모리에 저장된 데이터는 사라집니다. - 그러나 Redis는 디스크에 데이터를 저장하는 영구 저장 기능을 제공합니다. 이 기능을 사용하면, 서버가 종료되어도 데이터를 복구할 수 있습니다. - 이 영구 저장 방식은 RDB (Redis DataBase)와 AOF (Append Only File) 두 가지 방법이 있습니다.
2) MacOS 내에서 로컬 Redis 설치 : homebrew
1. homebrew로 redis를 설치합니다.
💡 homebrew로 redis를 설치합니다
- 간단하게 homebrew를 이용하여 설치를 합니다. - 설치를 하여 실행을 할 때는 foreground 상태에서 내가 서버를 킨 상태인 경우에 수행이 되는 경우와 background 상태에서 PC를 키는 경우 수행되는 경우 두 개의 서비스 실행방법에 대해 알아봅니다.
💡 설치된 Redis를 실행합니다.(foreground) - 해당 실행방법은 forground 상태에서 내가 직접 터미널에서 서버를 켜둔 경우에 실행되는 경우로 실행합니다.
# foreground 상태에서 redis 실행
$ redis-server
💡 해당 터미널에서 나가는 방법은 ‘control + c’ 버튼을 누르면 나가실 수 있습니다.
[더 알아보기] 💡 foreground 상태
- 컴퓨터에서 실행되는 프로세스의 운영 방식 중 하나를 가리킵니다. - 프로그램이 foreground에서 실행되면, 사용자가 직접적으로 그것과 상호작용할 수 있습니다. - 이는 반대 개념인 background 실행과 대비되는데, background에서 실행되는 프로세스는 사용자의 직접적인 상호작용 없이 백그라운드에서 작동합니다.
4. 설치된 Redis를 실행합니다.(background)
# background 상태에서 redis를 실행합니다.
$ brew services start redis
# background 상태에서 실행되는
$ brew services info redis
💡 [참고] homebrew에서 실행 중인 service 리스트를 확인하는 방법은 아래의 명령어를 입력하시면 됩니다.
# homebrew background에서 실행중인 서비스 조회
$ brew services list
[더 알아보기] 💡 background 상태
- 사용자의 직접적인 상호작용 없이 프로그램이 실행되는 모드를 말합니다. - 이 상태에서 실행되는 프로세스는 사용자의 주요 작업에 방해되지 않으면서 동시에 작업을 수행할 수 있습니다. 이는 포그라운드 상태, 즉 사용자가 직접적으로 프로그램과 상호작용하는 상태와 대비됩니다.
💡[참고] homebrew의 개발 명령에 대해 궁금하시면 아래의 글을 참고하시면 도움이 됩니다.
- forground 상태에서 실행인 경우는 다른 터미널 창을 띄어주고 작업하면 되고, background 상태에서 실행하는 경우에는 그냥 그대로 작업하시면 됩니다.
$ redis-cli
3) redis-cli 명령어 활용하기 -1 : 시스템 명령어
1. 시스템 명령어
명령어
설명
사용예시
redis-cli -p <port> info -a <password>
기본 포트 <port>와 <password> 기반으로 접근하여 redis 정보를 가져옵니다.
redis-cli -p 6379 info
redis-cli command
모든 redis 명령어 확인
redis-cli command
redis-cli ping
redis 서버와의 연결 상태 확인
redis-cli ping
redis-cli select [db_number]
redis 데이터베이스 선택
redis-cli select 0
config get [pattern]
redis 설정 확인
redis-cli config get *
config set [parameter] [value]
redis 설정 변경
config set requirepass my_password
2. redis-cli info
💡 redis-cli info - 접속되어 있는 redis 서버에 대한 정보를 확인합니다. - 아래와 같은 redis에 대한 주요 정보가 출력이 됩니다.
# 접속중인 redis 서버의 정보를 가져옵니다.
$ redis-server info
분류
설명
# Server
서버에 관련된 일반 정보, 버전, 모드 등
# Clients
클라이언트에 관련된 정보, 연결된 클라이언트 수 등
# Memory
메모리 사용량과 관련된 정보
# Persistence
데이터 지속성에 관련된 정보, RDB와 AOF 사용 상태 등
# Stats
일반 통계, 연산 수, 히트/미스 비율 등
# Replication
복제에 대한 정보, 마스터/슬레이브 상태 등
# CPU
CPU 사용량에 대한 정보
# Modules
로드된 모듈에 대한 정보
# Errorstats
오류 통계에 대한 정보
# Cluster
클러스터 상태에 대한 정보
# Server
# 서버 관련 일반 정보, 버전, 모드 등
# Clients
connected_clients:1 # 현재 연결된 클라이언트 수
cluster_connections:0 # 클러스터 간 연결 수
maxclients:10000 # 동시에 연결 가능한 최대 클라이언트 수
client_recent_max_input_buffer:16896 # 최근 클라이언트 입력 버퍼의 최대 크기
client_recent_max_output_buffer:0 # 최근 클라이언트 출력 버퍼의 최대 크기
blocked_clients:0 # 현재 차단된 클라이언트 수
tracking_clients:0 # 현재 추적 중인 클라이언트 수
clients_in_timeout_table:0 # 타임아웃 테이블에 있는 클라이언트 수
total_blocking_keys:0 # 차단 키의 총 수
total_blocking_keys_on_nokey:0 # nokey 상태인 차단 키의 총 수
# Memory
used_memory:1309456 # 사용 중인 메모리의 크기
used_memory_human:1.25M # 사람이 읽기 쉬운 형태로 표시한 사용 중인 메모리의 크기
used_memory_rss:7061504 # 실제 메모리 소비량
used_memory_rss_human:6.73M # 사람이 읽기 쉬운 형태로 표시한 실제 메모리 소비량
used_memory_peak:1509856 # 메모리 사용량의 최대치
used_memory_peak_human:1.44M # 사람이 읽기 쉬운 형태로 표시한 메모리 사용량의 최대치
used_memory_peak_perc:86.73% # 메모리 사용량 최대치에 대한 현재 메모리 사용량의 비율
used_memory_overhead:1099224 # 오버헤드로 인한 메모리 사용량
used_memory_startup:1098896 # 시작 시 메모리 사용량
used_memory_dataset:210232 # 데이터 세트에 사용된 메모리 크기
# Persistence
# 데이터 지속성 관련 정보, RDB와 AOF 사용 상태 등
# Stats
# 일반 통계, 연산 수, 히트/미스 비율 등
# Replication
# 복제 관련 정보, 마스터/슬레이브 상태 등
# CPU
# CPU 사용량 관련 정보
# Modules
# 로드된 모듈 관련 정보
# Errorstats
# 오류 통계 관련 정보
# Cluster
cluster_enabled:0 # 클러스터링 활성화 여부
# Keyspace
# 데이터베이스 키 공간 관련 정보
4) redis-cli 명령어 활용하기 : 실행 명령
1. redis-cli 실행 명령어
💡 redis-cli 명령어
- redis 데이터베이스를 조작하기 위해 사용되는 redis-cli 명령어들입니다. - 기본적으로 ‘standalone’ 형태의 데이터베이스에서 활용하는 방법을 확인해 봅니다.
- Standalone 형태의 Redis는 단일 인스턴스로 동작하는 Redis를 의미합니다. 이는 클러스터나 복제본(replica) 없이 독립적으로 동작하는 Redis 서버를 말하며, 간단한 구조로 인해 설정이나 관리가 비교적 쉽습니다. 하지만, 단일 장애 지점(single point of failure)이 될 수 있어서, 높은 가용성이나 대용량 데이터 처리가 필요한 경우에는 클러스터 구조를 사용하는 것이 좋습니다.
2. 키-값 데이터 추가 및 데이터 조회 : SET key value, keys *
💡 키-값 데이터 추가 및 데이터 조회
- 해당 부분에서는 데이터 저장구조(Collection Type)에 맞게 몇 가지 데이터를 넣어보고 데이터를 조회하는 것을 확인해 봅니다.
명령어
분류
설명
SET key value
데이터 설정
키의 값을 설정
GET key
데이터 조회
키의 값을 가져옴
keys *
데이터 조회
redis key 값들 조회
# 값 데이터 예시(String)
$ SET greeting "Hello, World!"
# 값 데이터 조회 예시
$ GET greeting
# 비트 타입의 데이터 등록
$ SET weekendBit 0000010
# 값 데이터 조회
$ GET weekendBit
# 모든 키 값 조회
$ keys *
3. 키 값 데이터 수정-삭제
💡 키 값 데이터 수정-삭제
- 생성한 키-값 데이터를 기반으로 데이터를 수정하게 삭제를 해봅니다.
명령어
분류
설명
예시
RENAME key newkey
데이터 설정
키의 이름을 변경
RENAME mykey newkey
SET key value
데이터 설정
키의 값을 변경
SET mykey "New Value"
DEL key
데이터 삭제
키를 삭제
DEL mykey
FLUSHALL
데이터 삭제
모든 키를 삭제
FLUSHALL
# 키 변경
$ RENAME greeting k_greeting
# 키 조회
$ keys *
# 값 변경
$ SET k_greeting "hello"
# 값 조회
$ GET k_greeting
# key 삭제
$ DEL weekendBit
# key 전체 조회
$ keys *
# 전체 데이터 삭제
$ FLUSHALL
# key 전체 조회
$ keys *