Redis

Jun 2, 2017


Redis (REmote DIctionary Server)

원격 딕셔너리 서버

cli 실행

redis-cli   

데이터타입

String 타입

  • Redis의 기본 데이터형
  • 이진데이터 저장 가능
  • 정수, 실수형 등은 없음
  • 한키에 최대 512MB

기본포트

port - 6379

명령어

set

set <key> <value>
ex) set mykey "hello"

get

get <key>
ex) get mykey

mset

mset <key1> <value1> <key2> <value2> <key3> <value3>
ex) mset value1 10 value2 20 value3 30 

mget

mget <key1> <key2> <key3>
ex) mget value1 value2 value3

값 증감

서버에서 변경하는 이유는
클라이언트와 트랜잭션이뤄지는 동안 값이 변경는 것을 막기위해 이 기능을 사용함

INCR (값 1 증가)

INCR <key>
ex) INCR mykey

INCRBY (특정 값 만큼 증가)

INCRBY <key> number
 ex) INCRBY mykey 3

DECR (값 1 감소)

DECR <key>
 ex) DECR mykey

DECRBY (특정 값 만큼 감소)

DECRBY <key> number
 ex) DECRBY mykey 3

값의 문자열 길이

STRLEN mykey
 ex) (세팅)set mykey "HELLO WORLD"
    STRLEN mykey 


명령어 상세 설명

set

  • String 의 집합
  • 중복을 허용하지 않음
  • 삽입 순서로 저장됨
  • (순서가 중요하진 않음)
  • 최대 약 42억개 저장
  • 성능때문에 수천개만 저장 권장

여러 맴버를 가진 Set 만들기

  • Key에 value 추가
  • return값은 integer인데 저장된 값의 개수를 표시해줌 (1-> 1개 저장, 0-> 0개 저장)
sadd <key> <value>
 ex) saad myset "Hello"
     saad myset "World"

smembers

  • 멤버 보기
smembers <key> 
ex) smembers myset

scard

  • cardinal number 멤버 갯수
scard <key> 
ex) scard myset

srem

  • Remove 멤버 지우기
srem <key> <value>
ex) srem myset

sismember

  • 맴버 인지 확인
  • return값은 integer인데 (1-> True, 0-> False)
sismember <key> <value>
ex) sismember myset "Hello"

sunion

  • set끼리 합집합
sunion <key1> <key2>
ex) sunion key1 key2

sinter

  • set끼리 교집합
sinter <key1> <key2>
ex) sinter key1 key2

sdiff

  • set끼리 차집합
sdiff <key1> <key2>
ex) sdiff key1 key2
    sdiff key2 key1

Sorted Set

  • 각 value에 Score가 추가된 Set
  • Value들이 Score 순서로 정렬 되어 있음
  • 범위 검색 가능
  • 가장 작거나 큰 Score 값의 value 검색 가능

ZADD

  • 원소 입력
  • score - 정렬 기준
ZADD <key> <score> <value>
ex) 
ZADD myzset 1 "one"
ZADD myzset 1 "uno" 
ZADD myzset 2 "two" 3 "three"

ZRANGE

  • 범위 검색
  • WITHSCORES - SCORES 같이 표시하라.
ZRANGE <key> <범위1> <범위2> WITHSCORES
ex)
ZRANGE myzset 0 -1 WITHSCORES

ZRANK

  • 랭크 검식 (주의 - 0부터 시작)
ZRANK <key> <value>
ex) 
ZRANK myzset "two"
ZRANK myzset "one"

ZSCORE

  • Score 값 확인
 
ZSCORE <key> <value>
ex) 
ZSCORE myzset "two"
ZSCORE myzset "one"

Hash

  • Field와 String의 쌍으로 이루어진 저장 구조
  • Java 의 HashMap과 비슷
  • 최대 약 42억개 까지 저장

HMSET

  • Hash multi Set
  
HMSET <key> <field1> <value1> <field2> <value2> 
ex) 
HMSET myhash field1 "Hello" field2 "World"
HMSET myhash field3 "12345"

HGET

  • Hash get
 
HGET <key> <filed>
ex) HGET myhash field1

HKEYS

  • Hash에 key 출력
 
HKEYS <key> 
ex) HKEYS myhash

HVALS

  • Hash에 values 출력
 
HVALS <key> 
ex) HVALS myhash

HDEL

  • Hash 의 key 삭제
 
HDEL <key> <filed>
ex) HDEL myhash field1

HGET

  • Hash 의 key 출력
 
HGET <hash> <key>
ex) HGET myhash field1

HINCRBY

  • 지정된 값 증가
 
HINCRBY <key> <filed> <incremet>
ex) HINCRBY myhash field3 2

List

  • List의 앞과 뒤에 데이터를 넣고 뺄 수 있음 (push/pop)
  • 지정된 위치에서도 데이터를 넢고 뺄 수 있다

LPUSH

  • Left Push
 
LPUSH <key> <value> 
ex) 
LPUSH mylist "world"
LPUSH mylist "hello"

RPUSH

  • Right push
 
RPUSH <key> <value> 
ex) 
RPUSH mylist "one"
RPUSH mylist "two"

LPOP

  • Left Pop
 
LPOP <key>
ex) LPOP mylist

RPOP

  • Right Pop
 
RPOP <key>
RPOP mylist

LRANGE

  • Range 출력
  • 전체 출력(시작(0) - 끝(-1))
 
LRANGE <key> <start> <stop>
ex) LRANGE mylist 0 -1

LINSERT

  • 특정 위치 기준으로 Insert
  • pivot은 기준 값
 
LINSERT <key> <BEFORE|AFTER> <pivot> <value>
ex) LINSERT mylist BEFORE "one" "zero"

LSET

  • 특정 인덱스에 Insert
  
LSET <key> <index> <value>
ex) LSET mylist 0 "minus_one"