반응형
해당 글에서는 MacOS 기반 로컬 환경 구성하는 방법과 Redis 명령어에 대해 알아봅니다.
💡 [참고] Redis 관련해서 구성 내용에 대해 궁금하시면 아래의 글을 참고하시면 도움이 됩니다.
분류 | 링크 |
Redis(Remote Dictionary Server) 이해하기 -1 : 구조 및 특징, 아키텍처 | https://adjh54.tistory.com/447 |
Redis(Remote Dictionary Server) 이해하기 -2 : MacOS 로컬 환경 구성 및 명령어 | https://adjh54.tistory.com/448 |
RedisTemplate API Document | https://adjh54.tistory.com/462 |
ValueOperations API Document | https://adjh54.tistory.com/460 |
HashOperations API Documnet | https://adjh54.tistory.com/461 |
1) Redis(Remote Dictionary Server)
💡 Redis(Remote Dictionary Server)
- NoSQL 데이터베이스 중 하나이며 오픈소스 소프트웨어입니다. 주요한 특징은 ‘키-값(Key-Value)’ 형태로 데이터를 저장하고 이 데이터를 ‘인-메모리 데이터 저장소’에 저장합니다.
- ‘키-값(Key-Value)’ 형태로 데이터를 저*을 하며 ‘다양한 종류의 값’을 지정 가능합니다. 값으로는 문자열, 리스트, 셋, 정렬된 셋, 해시 등을 지원합니다.
- ‘인 메모리 데이터 저장소’를 사용하기에 서버의 메인 메모리에 모든 데이터를 저장하므로, 디스크 I/O를 거치는 다른 데이터베이스 시스템보다 훨씬 빠른 성능을 보여줍니다.
- 메모리에 저장되는 데이터 베이스는 디스크에 저장하여 휘발성으로 사용되는 데이터를 영구적으로 저장하는 기능을 제공하여 서버가 다운되더라도 데이터를 복구할 수 있습니다.
- 주로 데이터베이스, 캐시, 메시지 브로커 등 다양한 용도로 사용될 수 있습니다.
[ 더 알아보기 ]
💡 NoSQL
- ‘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 설치
$ brew install redis
2. 설치를 확인합니다.
# redis의 버전을 확인합니다.
$ redis-cli --version
3. 설치된 Redis를 실행합니다.(foreground)
💡 설치된 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의 개발 명령에 대해 궁금하시면 아래의 글을 참고하시면 도움이 됩니다.
5. Redis-cli를 실행합니다.
💡 Redis-cli를 실행합니다
- 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’ 형태의 데이터베이스에서 활용하는 방법을 확인해 봅니다.
명령어 | 분류 | 설명 | 예시 |
keys * | 데이터 조회 | redis key 값들 조회ㅇ | keys * |
keys keyword | 데이터 조회 | redis key의 keyword기반 조회 | keys a |
QUIT | 서비스 종료 | redis-cli 종료 | QUIT |
SET key value | 데이터 설정 | 키의 값을 설정 | SET mykey "Hello" |
GET key | 데이터 조회 | 키의 값을 가져옴 | GET mykey |
DEL key | 데이터 삭제 | 키를 삭제 | DEL mykey |
FLUSHALL | 데이터 삭제 | 모든 키를 삭제 | FLUSHALL |
EXISTS key | 데이터 확인 | 키가 존재하는지 확인 | EXISTS mykey |
EXPIRE key seconds | 데이터 설정 | 키의 만료 시간을 설정 | EXPIRE mykey 120 |
TTL key | 데이터 조회 | 키의 남은 시간을 반환 | TTL mykey |
PERSIST key | 데이터 설정 | 키의 만료 시간을 제거 | PERSIST mykey |
RENAME key newkey | 데이터 설정 | 키의 이름을 변경 | RENAME mykey newkey |
TYPE key | 데이터 조회 | 키의 데이터 타입을 반환 | TYPE mykey |
INCR key | 데이터 설정 | 키의 값을 1 증가 | INCR mycounter |
DECR key | 데이터 설정 | 키의 값을 1 감소 | DECR mycounter |
LPUSH key value | 리스트 조작 | 리스트의 왼쪽에 값 추가 | LPUSH mylist "world" |
RPUSH key value | 리스트 조작 | 리스트의 오른쪽에 값 추가 | RPUSH mylist "hello" |
LPOP key | 리스트 조작 | 리스트의 왼쪽 값 제거 및 반환 | LPOP mylist |
RPOP key | 리스트 조작 | 리스트의 오른쪽 값 제거 및 반환 | RPOP mylist |
LLEN key | 리스트 조회 | 리스트의 길이 반환 | LLEN mylist |
LRANGE key start stop | 리스트 조회 | 리스트의 일부를 반환 | LRANGE mylist 0 1 |
SADD key member | 셋 조작 | 셋에 멤버 추가 | SADD myset "hello" |
SMEMBERS key | 셋 조회 | 셋의 모든 멤버 반환 | SMEMBERS myset |
SREM key member | 셋 조작 | 셋에서 멤버 제거 | SREM myset "hello" |
SISMEMBER key member | 셋 확인 | 멤버가 셋에 있는지 확인 | SISMEMBER myset "world" |
ZADD key score member | 정렬된 셋 조작 | 정렬된 셋에 멤버 추가 | ZADD myzset 1 "hello" |
ZRANGE key start stop [WITHSCORES] | 정렬된 셋 조회 | 정렬된 셋의 일부를 반환 | ZRANGE myzset 0 -1 WITHSCORES |
HSET key field value | 해시 조작 | 해시의 필드 값을 설정 | HSET myhash field "Hello" |
HGET key field | 해시 조회 | 해시의 필드 값을 가져옴 | HGET myhash field |
HGETALL key | 해시 조회 | 해시의 모든 필드와 값을 가져옴 | HGETALL myhash |
HDEL key field | 해시 조작 | 해시의 필드를 삭제 | HDEL myhash field |
[ 더 알아보기 ]
💡 redis의 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 *
오늘도 감사합니다. 😀
반응형
'DB > 환경설정' 카테고리의 다른 글
[DB/MySQL] MySQL 8.0 초기 환경 세팅 및 최초 구성 방법 : MacOS (2) | 2024.03.29 |
---|---|
[DB/Postgres] 저장 프로시저(Stored Procedure)로 Dummy 데이터 구성 방법 (1) | 2024.01.23 |
[DB] MacOS에서 PostgreSQL 로컬 데이터베이스 구성 방법 (2) | 2022.11.14 |