[Redis] 1.Redis

Redis의 개념을 알고 설치와 함께 기본적인 사용법을 확인해보자.

Redis

REmote Dictionary Server의 약어로, 메모리 기반의 “키-값”구조의 데이터 관리 시스템으로 비관계형 데이터베이스이다.

모든 데이터를 메모리에 저장하고 조회하여 Read/Write가 빠르며, 데이터베이스, 캐시 및 메시지 브로커로 사용됩니다. 또한 Redis Cluster를 통해 고 가용성을 보장합니다.

String, Set, Sorted Set, Hash, List 5가지의 데이터 타입을 지원합니다.

도커를 이용해 설치하기

직접 설치 하는 것보단 도커를 사용하면 간단하게 사용이 가능하다.

아아.. 도커 너무 좋아..

redis 이미지 다운로드

$ docker pull redis:6.0

redis 이미지 버전 redis

컨테이너 실행

$ docker run -d -p 6379:6379 --name my-redis redis:6.0

redis는 기본 6379 포트를 사용한다.

redis-cli 실행

$ docker exec -it my-redis redis-cli
127.0.0.1:6379>

redis-cli 명령어

공통

전체 키 조회

> keys <pattern>

키 이름 변경

> rename <key> <newkey>

키 존재 확인

> exists <key>

true: 1, false: 0

저장

> save

redis 폴더의 dump.rdb파일로 생성되기 떄문에 컨테이너를 실행할 때 volume을 추가한다.

모든 키 삭제

> flushall

String

데이터 삽입/조회(string)

> set <key> <value>
> get <key>

값의 길이 확인

> strlen <key>

한번에 여러 데이터 삽입/조회

> mset <key1> <value1> <key2> <value2>
> mget <key1> <key2>

값에 새로운 값 추가

> append <key> <value>

Hash

데이터 삽입/조회(Hash)

> hmset <key> <field1> <value1> <field2> <value2>
> hget <key> <field>

한번에 여러 데이터 조회(Hash)

> hmget <key> <field1> <field2> ...

Key의 전체 field와 value 조회

> hgetall <key>
> hkeys <key>
> hvals <key>

Field 존재 확인

> hexists <key> <field>

true: 1, false: 0

특정 Field 삭제

> hdel <key> <field>

List

데이터 추가

> lpush <key> <value1> <value2> ..

데이터 검색

> lrange <key> <start index> <stop index>

기존 List에 새로운 데이터 추가

> rpush <key> <value1> <value2> ..

기존 List에 맨 앞에 데이터 추가

> lpushx <key> <value1> <value2> ..

value 사이에 데이터 추가

> linsert <key> Before|After <pivot value> <value>

특정 key의 인덱스 value 변경

> lset <key> <index> <value>

마지막 value 제거

> rpop <key>

value 갯수

> llen <key>

특정 인덱스 위치의 데이터 검색

> lindex <key> <index>

Set

데이터 삽입/조회

> sadd <key> <member> .. 
> smembers <key>

Value 갯수

> scard <key>

두 Key의 값들을 비교하여 앞의 Key에만 있는 value를 출력

> sdiff <key1> <key2>

두 Key의 값들을 비교하여 앞의 Key에만 있는 value를 다른 key로 저장

> sdiffstore <destination key> <key1> <key2>

Key의 element의 value를 합쳐서 출력

> sunion <key1> <key2> ..

Key의 element의 value를 합쳐서 다른 key로 저장

> sunionstore <destination key> <key1> <key2> ..

저장된 value를 삭제

> srem <key> <member> ...

저장된 value에서 random으로 삭제

> spop <key> [count]

Sorted Set

Set과 동일하지만 정렬이 된 상태로 저장됨

데이터 저장

> zadd <key> <member>  ..

데이터 검색

> zrange <key> <start index> <stop index>

value 갯수 출력

> zcard <key>

key범위 내의 value 카운트

> zcount <key> <min> <max>

저장 된 value 삭제

> zrem <key> <member> ...

데이터가 저장된 value의 rank

> zrank <key> <member>

데이터가 저장된 value의 rank (reverse)

> zrevrank <key> <member>

데이터가 저장된 시점의 value 포인터

> zscore <key> <member>

구독

> subscribe [channel, channel2, ..]

게시

> publish <channel> <message>

채널 목록

> pubsub channels <pattern>