redis 기초 정리

codeing999·2022년 12월 3일
0

Node NPM

목록 보기
11/16
post-thumbnail

참고자료

http://redisgate.kr/redis/introduction/redis_intro.php
이곳이 개념 및 명령어 등 굉장히 정리 잘 되어 있다.
https://inpa.tistory.com/search/redis 인파의 레디스글들

redis 소개

  • 데이터 저장소로 디스크가 아닌 메모리를 사용합니다. 그리고 데이터의 안전한 보관과 백업을 위해 다른 서버의 메모리에 실시간으로 복사본을 남길 수 있고, 디스크에 저장하는 방법을 제공합니다.
  • 성능은 초당 약 10만회 명령을 실행합니다. 이는 서버(CPU)에 따라 다르지만 일반적으로 초당 5만 ~ 25만회를 실행합니다. » 성능에 대한 자료는 여기를 보세요. O(1), O(N), O(log(N))
  • 기본적으로 key-value 저장 방식이지만, Lists, Sets, Sorted Sets, Hashes, Streams 같은 다양한 저장 방식을 제공합니다. 따라서 다양한 방식으로 데이터를 활용할 수 있습니다.
  • Redis Server Instance는 1개 프로세스(process)로 수행되며, 따라서 평상 시 CPU 1 core만 사용합니다.
    가끔 AOF/RDB/Full Resync 시에 추가 1개 core를 더 사용합니다. 그러므로, 서버 머신 또는 VM 하나에 여러 개의 Redis Server를 사용할 수 있습니다. » Process와 thread에 대한 자세한 내용은 여기를 보세요. Lock, Unix

설치

npm i redis

vscode에서 패키지 설치하는 것 말고도 실제 프로그램을 설치해야함.

윈도우는 https://github.com/microsoftarchive/redis/releases
여기서 .msi 받아 설치하고,

우분투는 apt-get 명령어를 치면 될 것이다.

sudo apt-get install redis-server
redis-server --version //설치 후 버전 확인

명령어

redis-cli //레디스 명령어 쓸 수 있는 곳으로 진입

String

Strings는 key와 value가 일 대 일 관계입니다.
반면 Lists, Sets, Sorted Sets, Hashes는 일 대 다 관계입니다.

set 키이름 밸류 //해당 키에 밸류 저장. 밸류에 띄어쓰기가 있으면 큰따옴표 사용. 기존 값 있을 시 덮어 씀
get 키이름 //해당 키의 밸류 조회
del key //해당 키 삭제.

List

소개

Lists는 key와 value가 일 대 다 관계입니다.
value는 입력된 순서대로 저장됩니다.
Lists는 주로 큐(Queue)와 스택(Stack)으로 사용됩니다.
큐(Queue)는 들어오는 데이터를 순서대로 처리할때 사용합니다.
스택(Stack)은 웹브라우져의 백버튼 처럼 주로 되돌아 갈때 사용합니다.

키(리스트)의 생성과 삭제

value가 저장되면 키(리스트)는 생성됩니다. 키에 value가 하나도 없으면 키는 삭제됩니다.
즉, 키(리스트)의 생성과 삭제를 위한 별도의 작업은 필요없습니다.

Set

Sets는 key와 value가 일 대 다 관계입니다.
Value는 입력된 순서와 상관없이 저장되며, 중복되지 않습니다. 즉, value A가 2번 저장되도 결과적으로 하나만 남습니다.
Sets에서는 집합이라는 의미에서 value를 member라 부릅니다.
Sets은 주로 카드게임같은 게임이나, 집합연산이 필요한 곳에 사용됩니다.

Hash

Field와 value로 구성

Hashes는 key 하나에 여러개의 field와 value로 구성됩니다.
key 하나에 field와 value 쌍을 40억개(4,294,967,295)까지 저장 가능합니다.

Table과 Hash의 유사한 점

Hashes가 field와 value로 구성된다는 면에서 RDB의 table과 비슷합니다.
Hash key는 table의 PK, field는 column, value는 value로 보면 됩니다.
Key가 PK와 같은 역할을 하기 때문에 key 하나는 table의 한 row와 같습니다.

Table과 Hash의 다른 점

Table의 column 수는 일반적으로 제한이 있는 반면, Hash의 field 수는 40억개로 거의 무제한에 가깝습니다.
Table에서 column을 추가하려면 alter문으로 미리 table을 변경해야 하나, Hash에서는 그런 사전 작업이 필요없습니다. 따라서 field의 추가/삭제는 자유롭습니다. Field의 추가/삭제는 해당 key에만 영향을 미칩니다.

hset 키이름 필드이름 밸류 //해당 키의 해당 필드를 만들고 해당 밸류를 저장. 있을 시 덮어 씀.
hgetall 키이름 //해당 키의 모든 필드와 밸류 조회
hget 키이름 필드이름 //해당 키의 해당 필드의 밸류 조회

기타

ttl 키이름 //해당 키의 만료시간 보기

마무리

node에서 redis 문법은 다음에 정리할 예정

profile
코딩 공부 ing..

0개의 댓글