-
1. 개요
Redis? REmote DIctionary Server
Redis는 캐시서버입니다.
key-value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반 비관계형 데이터 베이스(NoSQL) 관리 시스템입니다.
in-memory 기반의 데이터 처리는 속도가 빠르지만 서버가 꺼지면 데이터가 사라진다는 단점을 가지고 있습니다.
출처 피누.vlog/우아한-Redis - 일반적으로 저장장치에 DB를 조회하려면 저장장치로의 i/o가 발생하기 때문에 시간이 걸립니다.
- redis의 사용은 서비스 속도가 문제를 일으키는 상황에 활용 되는 방법중 하나입니다.
-> redis를 통해 캐시를 이용하여 in-memory 방식을 활용하여 데이터를 임시로 저장해두기 때문에 저장장치의 동작보다 빠르게 불러올 수 있습니다.
-자주 사용하는 데이터는 캐시 서버에서 우선 조회하고 없을 때 DB를 조회하면 전체적인 서비스의 속도를 향상 시킬 수 있습니다.
추가적인 활용 방안으로는 데이터에 만료시간을 지정하여 시간이 지나면 삭제 가능하도록 만들 수 있고 메모리가 꽉 찼어도 LRU(Least Recently Used) 알고리즘에 의해 데이터가 사라집니다.
*LRU : 가장 오랫동안 참조되지 않은 데이터를 교체하는 기법*
<지원하는 데이터 구조>
문자열
해시
리스트
집합
정렬된 집합
비트맵
하이퍼로그
지리공간 인덱스
스트림
2. Redis-cli 사용 방법
1) redis-cli 설치 및 접속
맥북
터미널 명령어 입력
brew install redis redis-server
redis-server 입력시 기본 포트 6379로 연결 되었다면 연결 성공입니다.
윈도우
https://github.com/microsoftarchive/redis/releases
깃에서 관리하고 있는 윈도우 버전 설치
- redis 설치 기본포트 : 6379
redis-cli 접속
호스트명과 포트번호를 생략하면 localhost의 6379로 접속됩니다.
-n db번호
-a 비밀번호
-s 소켓
-u 서버 url 등 접속 시 다양한 옵션 설정이 사용 가능합니다.
# localhost:6379접속 redis-cli # 원격접속 redis-cli -h #{호스트명} -p #{포트번호} # 정보보기 reids-cli info # help redis-cli help # 모니터링 redis-cli monitor
CRUD 명령어
set
종류 설명 keys 키 출력 set 키-값(key-value) 저장 mset 여러개 데이터 저장 setex 소멸시간 지정 get value 조회 mget 여러개 value조회 del 삭제 ttl 소멸 지정시간 까지 남은 시간(초단위) pttl 소멸 지정시간 까지 남은 시간(밀리 초단위) rename key값 이름변경 flushall 모든데이터 삭제 Keys * 현재의 키값들을 확인할 수 있습니다.
(empty list or set) 은 현재는 저장된 키값이 없을 경우 출력됩니다.
127.0.0.1:6379> keys * (empty list or set)
set key - value 형태로 저장
127.0.0.1:6379>set keyone valueone OK 127.0.0.1:6379>keys * 1) "keyone"
mset 여러개의 key / value 형태로 저장
127.0.0.1:6379> mset ktwo vtwo kthree vthree OK 127.0.0.1:6379> keys * 1) "khtree" 2) "keyone" 3) "ktwo"
setex 소멸시간 지정해서 저장
> [key] second [value] 시간은 초단위로 입력해야합니다.
입력 데이터 5초후에 사라집니다.
127.0.0.1:6379> setex kfour 5 kfour OK
get key에 해당하는 value를 조회
(nil) 은 해당 key가 없을 경우 출력됩니다.
127.0.0.1:6379> get kfour (nil) 127.0.0.1:6379> get kthree "vthree"
mget 여러개의 value 조회
127.0.0.1:6379> mget keyone ktwo 1) "valueone" 2) "vtwo"
del 해당 key와 value을 삭제
(integer) 1은 삭제성공
(integer) 0은 해당 key가 없을 경우 출력됩니다.
127.0.0.1:6379> del kthree (integer) 1 127.0.0.1:6379> keys * 1) "keyone" 2) "ktwo"
ttl 타임아웃까지 남은 시간을 초단위로 반환
pttl 타임아웃까지 남은 시간을 밀리 초단위로 반환
(integer) -2 는 key값이 없거나 소멸된 경우 출력됩니다.
(integer) -1 는 기한이 없는경우 출력됩니다.
127.0.0.1:6379> setex kthree 10 vthree OK 127.0.0.1:6379> ttl kthree (integer) 6 127.0.0.1:6379> ttl kthree (integer) 4 127.0.0.1:6379> pttl kthree (integer) 869 #지워진상태 키값 127.0.0.1:6379> ttl kthree (integer) -2 #기한이 없는 키값 127.0.0.1:6379> ttl keyone (integer) -1
keys *검색어* key 검색
해당 검색어가 포함된 모든 key를 검색합니다.
127.0.0.1:6379> keys *k* 1) "keyone" 2) "ktwo" 127.0.0.1:6379> keys *w* 1) "ktwo"
rename key의 이름을 변경하기 rename [기존key] [변경key]
key가 존재 할경우 덮어씁니다.
앞서 keyone 이라는 이름을 가진 키를 kone으로 변경하였습니다.
127.0.0.1:6379> rename keyone kone OK 127.0.0.1:6379> keys * 1) "ktwo" 2) "kone"
flushall 모든 데이터(key와 value)를 삭제
127.0.0.1:6379> flushall OK 127.0.0.1:6379> keys * (empty list or set)
'하나씩 쌓아보자' 카테고리의 다른 글
airflow-DAG (2) 2022.05.26 Terraform -1 기본 설명 및 설치/ 단일 서버 배포 (0) 2022.05.23