본문 바로가기
Research/Database

DB_Redis 설치 및 명령어 Cheatsheet(Mac OS)

by RIEM 2023. 2. 27.
728x90

https://www.youtube.com/watch?v=jgpVdJB2sKQ&t=875s

들어가기

  • Redis를 Mac OS에 직접 설치하여 사용해보는 방법

Redis란?

Redis는 일종의 거대한 Key-value 페어 JSON 파일을 저장한는 DB라고 생각하면 된다. Redis는 디스크에 저장하는 다른 DB들과 달리 인메모리에 저장하기 때문에 처리 속도가 매우 빠르다는 장점이 있다. 그러나 영구 저장보다는 임시로 저장되는 데이터에 적합하다. 일반적으로 전통적인 DB와 Redis를 조합해서 쓰는 것이 일반적이다.

Redis 사용 준비하기

Mac OS 터미널 기준으로 작업을 진행합니다.

brew install redis
brew services start redis
brew services stop redis
brew services restart redis
# redis-cli 접속하기
redis-cli
// 127.0.0.1:6379>

# redis-cli 나가기
quit 

Basic Commands

GET-SET

127.0.0.1:6379> SET name john
OK
127.0.0.1:6379> GET name
"john"

기본적인 SET, GET 명령어

127.0.0.1:6379> SET age 25
OK
127.0.0.1:6379> get age
"25"

참고로 default 데이터 타입은 'string'이다. 숫자 25를 입력했지만 반환 값은 문자열 '25'이다.

DEL

127.0.0.1:6379> DEL age
(integer) 1
127.0.0.1:6379> get age
(nil)

DEL 명령어로 삭제할 수 있다

EXISTS

127.0.0.1:6379> EXISTS name
(integer) 1
127.0.0.1:6379> GET name
"john"
127.0.0.1:6379> EXISTS hello
(integer) 0

해당 키의 값이 존재하는지 여부를 확인할 때 EXISTS 메소드를 쓰면 된다. 존재할 경우 1을 반환하고, 없으면 0을 반환하다.

KEYS -pattern-

127.0.0.1:6379> KEYS *
1) "age"
2) "name"

KEYS 다음 패턴을 기입해주면, 패턴에 맞는 키의 값을 찾아준다. 와일드카드를 추가해주면 당연히 모든 키들이 반환된다.

127.0.0.1:6379> KEYS a*
1) "age"

a로 시작하는 키값들만 찾게 해달라고 하니 age키만 반환된다

flushall

127.0.0.1:6379> flushall
OK
127.0.0.1:6379> KEYS *
(empty array)

flushall을 입력하면 모든 캐시들을 날려버린다.

Handling Expirations

ttl

127.0.0.1:6379> SET name JOHN
OK
127.0.0.1:6379> ttl name
(integer) -1

ttl에 name을 추가해주면 그 name의 expiration 될 시간을 나타낸다. TTL은 Time-to-live의 약자다.

expire

127.0.0.1:6379> expire name 10
(integer) 1

expire 메소드로 name 키의 ttl을 10초로 지정해주었다. 남은 시간을 확인하려면 위에서 했던 명령어 ttl을 사용해보면 된다.

127.0.0.1:6379> ttl name
(integer) 8
127.0.0.1:6379> ttl name
(integer) 8
127.0.0.1:6379> ttl name
(integer) 7
127.0.0.1:6379> ttl name
(integer) 6
127.0.0.1:6379> ttl name
(integer) 5
127.0.0.1:6379> ttl name
(integer) 4
127.0.0.1:6379> ttl name
(integer) 3
127.0.0.1:6379> ttl name
(integer) 1
127.0.0.1:6379> ttl name
(integer) 0
127.0.0.1:6379> ttl name
(integer) -2
127.0.0.1:6379> get name
(nil)

name이라는 키가 존재하지 않는 경우 -2를 반환한다.

setex

127.0.0.1:6379> setex name 10 Sujan
OK
127.0.0.1:6379> ttl name
(integer) 7
127.0.0.1:6379> ttl name
(integer) 5
127.0.0.1:6379> ttl name
(integer) 3
127.0.0.1:6379> ttl name
(integer) 2
127.0.0.1:6379> ttl name
(integer) 0
127.0.0.1:6379> ttl name
(integer) -2

setex를 사용하면 set과 expire 메소드를 동시에 사용한다.

Lists

lpush

127.0.0.1:6379> lpush friends john
(integer) 1

friends라는 리스트에 john이라는 엘리먼트를 넣는다

lrange

127.0.0.1:6379> lrange friends 0 -1
1) "john"

위 명령어는 friends라는 list의 인덱스 0부터 -1까지, 처음부터 끝까지 데이터 다 가져오라는 의미다.

127.0.0.1:6379> lpush friends Sujan
(integer) 2
127.0.0.1:6379> lpush friends Choi
(integer) 3
127.0.0.1:6379> lrange friends 0 -1
1) "Choi"
2) "Sujan"
3) "john"

보면 리스트에 데이터를 추가할 때마다 새 데이터가 1번으로 오는 스택 형태로 싸이는 것을 볼 수 있다. lrange의 l은 left의 약자인 것으로 추정된다.

rpush

127.0.0.1:6379> rpush friends Zanet
(integer) 4
127.0.0.1:6379> lrange friends 0 -1
1) "Choi"
2) "Sujan"
3) "john"
4) "Zanet"

rpush를 하면 아래부터 쌓있다.

lpop, rpop

127.0.0.1:6379> LPOP friends
"Choi"
127.0.0.1:6379> lrange friends 0 -1
1) "Sujan"
2) "john"
3) "Zanet"

127.0.0.1:6379> RPOP friends
"Zanet"
127.0.0.1:6379> lrange friends 0 -1
1) "Sujan"
2) "john"

왼쪽부터 데이터를 제거하고 싶다면 lpop을 사용한다. 반대로 오른쪽부터 제거하고 싶다면 rpop을 사용한다.

최근 5개 메시지 등과 같이 Stack, Queue 방식으로 처리하는 데이터 처리에 유용하다.

Sets

Sets은 중복을 허용하지 않는 list다.

SADD

127.0.0.1:6379> SADD games 'tekken'
(integer) 1
127.0.0.1:6379> SADD games 'love'
(integer) 1

set add.

SMEMBERS

127.0.0.1:6379> SMEMBERS games
1) "love"
2) "tekken"
127.0.0.1:6379>

SMEMBERS로 Sets 데이터 조회하기

SREM

127.0.0.1:6379> SREM games 'love'
(integer) 1

삭제하기 성공!

Hashes

HSET, HGET

127.0.0.1:6379> HSET person name john
(integer) 1
127.0.0.1:6379> HGET person name
"john"

HGETALL

127.0.0.1:6379> HGETALL person
1) "name"
2) "john"

Example

127.0.0.1:6379> HSET person age 25
(integer) 1
127.0.0.1:6379> HGETALL person
1) "name"
2) "john"
3) "age"
4) "25"
127.0.0.1:6379> HGET person age
"25"
127.0.0.1:6379> HGET person name
"john"

HDEL, HEXISTS

127.0.0.1:6379> HDEL person age
(integer) 1
127.0.0.1:6379> HEXISTS person age
(integer) 0

HDEL로 지우고 HEXISTS로 존재 여부를 확인했다.

728x90

'Research > Database' 카테고리의 다른 글

db_Redis 클라우드 사용하는 방법  (0) 2023.03.01
nestjs_cache-manager로 redis 사용하기  (0) 2023.02.27
DB의 인덱스란  (0) 2023.02.26
DB_Optimistic Lock vs. Pessimistic Lock  (0) 2023.02.24
TypeORM_QueryBuilder_Select  (0) 2023.02.24

댓글