Redis 란?
- Redis란 Remote Dictionary Server 의 약자로, 오픈 소스 인메모리(in-memory) 데이터 구조 저장소입니다.
- 주로 빠른 데이터 처리가 요구되는 환경에서 많이 사용됩니다.
- Redis는 데이터를 디스크가 아닌 메모리에 저장하기 때문에 매우 빠른 읽기 및 쓰기 성능을 제공합니다.
- 또한, Redis는 다양한 데이터 구조를 지원하며, 단순한 키-값 저장소를 넘어 더 복잡한 데이터 관리에도 사용됩니다.
Redis 의 주요 특징
- 인메모리 데이터 저장
- 모든 데이터를 메모리에 저장하여 매우 빠른 속도로 데이터에 접근할 수 있습니다.
- 필요에 따라 데이터를 디스크에 영구 저장(persistence)할 수도 있습니다.
- 다양한 데이터 구조 지원
- 단순한 키-값(key-value) 쌍 외에도, Redis 는 문자열(String), 해시(Hash), 리스트(List), 셋(Set), 정렬된 셋(Sorted Set), 비트맵(Bitmap), 하이퍼로그로그(HyperLogLog), 스트림(Stream) 등의 데이터 구조를 지원합니다.
- 비동기 복제
- Redis는 마스터-슬레이브 복제를 지원하며, 데이터의 고가용성을 위해 여러 슬레이브로 복제할 수 있습니다.
- 클러스터링을 통해 여러 노드에 데이터를 분산시켜 높은 가용성과 확장성을 제공합니다.
- Lua 스크립팅 지원
- Redis는 Lua 스크립트를 지원하여 서버에서 복잡한 작업을 수행할 수 있습니다. 이로 인해 클라이언트-서버 간의 네트워크 통신 횟수를 줄일 수 있습니다.
- 트랜잭션 지원
- Redis는 MULTI, EXEC, DISCARD, WATCH 명령어를 통해 트랜잭션을 지원합니다.
- 높은 성능
- 메모리 기반 저장소로, 수백만 건의 요청을 초당 처리할 수 있습니다.
Redis 의 주요 사용 사례
- 캐싱(Caching)
- 가장 일반적인 Redis 사용 사례입니다. 자주 사용되는 데이터를 Redis에 저장하여 데이터베이스나 API의 부하를 줄이고 응답 시간을 단축합니다.
- 예: 사용자 세션, 페이지 데이터, 검색 결과 등의 캐싱
- 실시간 분석 및 통계
- 빠른 읽기/쓰기를 요구하는 실시간 데이터 분석에서 Redis는 매우 유용합니다.
- 예: 실시간 로그 분석, 사용자 행동 분석, 실시간 데이터 대시보드
- 세션 관리
- 사용자 세션 데이터를 Redis에 저장하여 웹 애플리케이션의 상태를 유지하고, 세션 데이터를 분산된 환경에서 공유할 수 있습니다.
- 예: 로그인 상태, 사용자 설정
- 메시지 브로커
- Redis는 PUB/SUB (발행/구독) 메커니즘을 통해 메시지 브로커로 사용할 수 있습니다.
- 예: 채팅 애플리케이션, 알림 시스템
- 순위/리더보드 시스템
- Redis의 정렬된 집합(집합 데이터 구조)를 사용하여 순위 시스템이나 리더보드를 구현할 수 있습니다.
- 예: 게임 리더보드, 인기 콘텐츠 목록
- 분산 잠금
- 여러 인스턴스에서 동시에 접근할 수 있는 리소스를 안전하게 관리하기 위해 분산 잠금을 구현할 수 있습니다.
- 예: 여러 서버에서 동시에 처리할 수 없는 작업의 관리
- 큐/작업 스케줄링
- Redis의 리스트와 세트를 활용해 작업 큐를 구현할 수 있으며, 우선순위가 있는 작업이나 예약 작업도 처리할 수 있습니다.
- 예: 이메일 전송 작업 큐, 백그라운드 데이터 처리
Redis 명령어
1. 기본 명령어
- redis-cli 접속
root@7df3022bfaa7:/data# redis-cli
127.0.0.1:6379>
- PING : Redis 서버가 실행 중인지 확인합니다
127.0.0.1:6379> PING
PONG
- SET : 키에 값을 설정합니다. (예 : SET key value)
127.0.0.1:6379> SET mykey "hello world!"
OK
- GET : 키의 값을 가져옵니다. (예 : GET key)
127.0.0.1:6379> GET mykey
"hello world!"
- DEL : 하나 이상의 키를 삭제합니다. (예 : DEL key1 key2)
127.0.0.1:6379> DEL mykey
(integer) 1
- EXISTS : 키가 존재하는지 확인합니다. (예 : EXISTS key)
127.0.0.1:6379> EXISTS mykey
(integer) 0
# 0 (존재하지 않음) 또는 1 (존재함)
2. 문자열 (String) 명령어
- INCR : 키의 값을 1씩 증가시킵니다. 값이 숫자일 경우에만 사용합니다. (예 : INCR counter)
127.0.0.1:6379> SET count 1
OK
127.0.0.1:6379> INCR count
(integer) 2
- DECR : 키의 값을 1씩 감소시킵니다. (예 : DECR counter)
127.0.0.1:6379> DECR count
(integer) 1
- APPEND : 키에 문자열을 추가합니다. (예 : APPEND mykey " World!")
127.0.0.1:6379> SET mykey "Hello"
OK
127.0.0.1:6379> APPEND mykey " World!"
(integer) 12
127.0.0.1:6379> GET mykey
"Hello World!"
3. 해시 (Hash) 명령어
- HSET : 해시 필드에 값을 설정합니다. (예 : HSET myhash field1 "Hello")
127.0.0.1:6379> HSET myhash field1 "Hello"
(integer) 1
- HGET : 해시 필드의 값을 가져옵니다. (예 : HGET myhash field1)
127.0.0.1:6379> HGET myhash field1
"Hello"
- HGETALL : 해시의 모든 필드와 값을 가져옵니다. (HGETALL myhash)
127.0.0.1:6379> HGETALL myhash
1) "field1"
2) "Hello"
4. 리스트 (List) 명령어
- LPUSH : 리스트의 왼쪽에 요소를 추가합니다. (예 : LPUSH mylist "Hello" "World"
127.0.0.1:6379> LPUSH mylist "hello" "world"
(integer) 2
- RPUSH : 리스트의 오른쪽에 요소를 추가합니다. (예 : RPUSH mylist "Bye")
127.0.0.1:6379> RPUSH mylist "BYE"
(integer) 3
- LPOP : 리스트의 왼쪽에서 요소를 제거하고 반환합니다. (예 : LPOP mylist)
127.0.0.1:6379> LPOP mylist
"world"
- LRANGE : 리스트의 특정 범위의 요소를 가져옵니다. (LRANGE mylist start stop)
127.0.0.1:6379> LRANGE mylist 0 -1
1) "hello"
2) "BYE"
5. 집합 (SET) 명령어
- SADD : 집합에 하나 이상의 요소를 추가합니다. (예 : SADD key member1 member2)
127.0.0.1:6379> SADD myset "Hello" "World"
(integer) 2
- SMEMBERS : 집합의 모든 요소를 가져옵니다. (예 : SMEMBERS key)
127.0.0.1:6379> SMEMBERS myset
1) "Hello"
2) "World"
- SREM : 집합에서 하나 이상의 요소를 제거합니다. (SREM key member1 member2)
127.0.0.1:6379> SREM myset "Hello"
(integer) 1
6. 정렬된 집합 (Sorted Set) 명령어
- ZADD : 정렬된 집합에 요소를 추가하고 점수를 산정합니다.
127.0.0.1:6379> ZADD myzset 1 "Hello" 2 "World"
(integer) 2
- ZRANGE : 정렬된 집합의 특정 범위 내의 요소를 가져옵니다. (예 : ZRANGE key start stop [WITHSCORES]
127.0.0.1:6379> ZRANGE myzset 1 -1 WITHSCORES
1) "World"
2) "2"
7. 키 관리 명령어
- KEYS : 패턴에 일치하는 모든 키를 나열합니다. (예 : KEYS pattern)
127.0.0.1:6379> KEYS *
1) "mykey"
2) "count"
3) "mylist"
4) "myhash"
- EXPIRE : 키의 만료시간을 설정합니다. (예 : EXPIRE key seconds)
127.0.0.1:6379> EXPIRE mykey 180
(integer) 1
- TTL : 키의 만료시간을 확인합니다. (예 : TTL key)
127.0.0.1:6379> TTL mykey
(integer) 135
8. 서버 관리 명령어
- INFO : Redis 서버의 정보와 통계를 확인합니다.
127.0.0.1:6379> INFO
# Server
redis_version:7.4.0
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:d18a0d3fa69567b8
redis_mode:standalone
os:Linux 6.6.12-linuxkit aarch64
arch_bits:64
...
- FLUSHALL : 모든 데이터베이스의 키를 삭제합니다.
- SHUTDOWN : Redis 서버를 종료합니다.
위의 명령어들은 Redis 를 효과적으로 관리하고 사용하는 데 유용합니다.
728x90
반응형
'개발 Tip' 카테고리의 다른 글
간편하게 URL 요청으로 QRCode 생성하기(Feat. chart.scrippter.com) (0) | 2025.02.14 |
---|---|
아이폰 사진 HEIF 파일 이미지 변환 및 MAC에서 별도 폴더에 모아보는 방법 (0) | 2025.02.02 |
CURL 명령어에 대해 알아보자 (0) | 2024.12.19 |