[Redis] 3. Redis 명령어 (자료 구조 실습)

최진민·2021년 11월 29일
0

Redis

목록 보기
3/6
post-thumbnail
  • String
  • List
  • Set
  • Sorted Set
  • Hash
  • Expire
  • 자료 구조의 기본 명령어를 알아보자.

  • 먼저, Redis 서버를 가동한 후, Redis 커맨드 라인에 진입하자.

    # redis가 위치한 디렉토리로 이동하여 redis-server 가동 (default는 로컬 호스트 IP(127.0.0.1)과 포트(6379)로 실행된다.)
    $ cd src
    $ redis-server
    
    # 다른 창을 통해 커맨드 라인에 진입
    $ cd src
    $ redis-cli



1. String


  • 가장 일반적인 자료구조

  • key-value 형식 (1:1)

  • 기본 명령어

    • get : key에 해당하는 value 리턴
    • set : key에 value 저장
    • del : key 삭제
  • 예제

    127.0.0.1:6379> get a
    (nil)
    127.0.0.1:6379> set a b
    OK
    127.0.0.1:6379> get a
    "b"
    127.0.0.1:6379> del a # 삭제한 갯수 반환
    (integer) 1



2. List


  • 컬렉션, Strings의 묶음

  • first, last삽입, 삭제 가능 (자바의 Linked List와 유사)

  • 기본 명령어

    • lpush <key> <value> : (left) 첫 번째(index : 0)에 데이터 삽입
    • rpush <key> <value> : (right) 마지막(index : -1)에 데이터 삽입
    • lpop <key> <value> : 첫 번째 데이터 삭제
    • rpop <key> <value> : 마지막 데이터 삭제
    • lrange <key> <s> <e> : s부터 e index의 데이터 반환
  • 예제

    127.0.0.1:6379> lpush a 1 # 추가된 value 갯수 리턴
    (integer) 1
    127.0.0.1:6379> rpush a 2
    (integer) 2
    127.0.0.1:6379> lpush a 3
    (integer) 3
    127.0.0.1:6379> lpush a 4
    (integer) 4
    127.0.0.1:6379> rpush a 5
    (integer) 5
    127.0.0.1:6379> lrange a 0 -1 # 첫 번째 인덱스 : 0 / 마지막 인덱스 : -1 / 마지막에서 2번째 인덱스 : -2...
    1) "4"
    2) "3"
    3) "1"
    4) "2"
    5) "5"
    127.0.0.1:6379> lrange a 0 3
    1) "4"
    2) "3"
    3) "1"
    4) "2"
    127.0.0.1:6379> llen a
    (integer) 5
    127.0.0.1:6379> rpop a 3 # 끝에서 3개 반환
    1) "5"
    2) "2"
    3) "1"



3. Set


  • 중복되지 않는 컬렉션

  • Set의 `value는 member

  • 순서x

  • ex) 좋아요를 누른 사람 수, 특정 상품을 본 사람 수 등

  • 기본 명령어

    • sadd <key> <value> : key에 member(value) 삽입
    • srem <key> <value> : member(value) 삭제
    • smembers <key> : 모든 member 조회
    • scard <key> : member count 조회
    • spop <key> : 무작위로 member 삭제
  • 예제

    127.0.0.1:6379> sadd myset a # 추가된 member 갯수 반환
    (integer) 1
    127.0.0.1:6379> sadd myset a
    (integer) 0
    127.0.0.1:6379> sadd myset b
    (integer) 1
    127.0.0.1:6379> sadd myset c
    (integer) 1
    127.0.0.1:6379> srem myset c # 삭제된 member 갯수 반환
    (integer) 1
    127.0.0.1:6379> smembers myset
    1) "b"
    2) "a"
    127.0.0.1:6379> scard myset
    (integer) 2
    127.0.0.1:6379> sadd myset c d e f # 여러 member 삽입 가능
    (integer) 4
    127.0.0.1:6379> smembers myset
    1) "d"
    2) "c"
    3) "a"
    4) "f"
    5) "b"
    6) "e"
    127.0.0.1:6379> spop myset 3 # 랜덤 member 삭제
    1) "d"
    2) "c"
    3) "f"
    127.0.0.1:6379> smembers myset
    1) "a"
    2) "b"
    3) "e"



4. Sorted Set

  • Set고 마찬가지로 중복되지 않는 컬렉션. 그러나 score라는 값을 통해 순위를 매겨 정렬이 가능하다.

  • score의 값이 같으면 value로 정렬

  • value는 중복 불가능, score는 중복 가능

  • 기본 명령어

    • zadd <key> <score> <member> : key에 score와 member 추가
    • zcard <key> : member count 조회
    • zrange <key> <s> <e> : s부터 e index의 member 반환
    • zrangebyscore <key> <min> <max> : min~max 범위에 해당하는 score 값을 갖는 member 반환
    • zrem <key> <member> : member 삭제
  • 예제

    127.0.0.1:6379> zadd ss 5 e # 추가된 value 갯수
    (integer) 1
    127.0.0.1:6379> zadd ss 3 c
    (integer) 1
    127.0.0.1:6379> zadd ss 1 a
    (integer) 1
    127.0.0.1:6379> zadd ss 2 b
    (integer) 1
    127.0.0.1:6379> zadd ss 4 d
    (integer) 1
    127.0.0.1:6379> zcard ss # value count
    (integer) 5
    127.0.0.1:6379> zrange ss 0 -1
    1) "a"
    2) "b"
    3) "c"
    4) "d"
    5) "e"
    127.0.0.1:6379> zrangebyscore ss 2 4
    1) "b"
    2) "c"
    3) "d"
    127.0.0.1:6379> zrem ss b # 삭제된 value 갯수
    (integer) 1
    127.0.0.1:6379> zrange ss 0 -1
    1) "a"
    2) "c"
    3) "d"
    4) "e"



5. Hash


  • key 내부에 key-value가 존재하는 자료구조

  • 하나의 key에 약 40억(4,294,967,295)개의 key-value 저장 가능

  • 기본 명령어

    • hset <key> <field> <value> <field> <value> ... : 하나의 key에 여러 field-value 저장
    • hget <key> <field> : key와 field 값에 해당하는 value 리턴
    • hdel <key> <field> : field 삭제
    • hlen <key> : field count 반환
    • hgetAll <key> : 모든 field - value 쌍 반환
    • hkeys <key> : 모든 field 반환
    • hvals <key> : 모든 value 반환
  • 예제

    # field - value : name - jinmin / year - 1995 / month - 3
    127.0.0.1:6379> hset hh name jinmin year 1995 month 3
    (integer) 3
    127.0.0.1:6379> hget hh name
    "jinmin"
    127.0.0.1:6379> hget hh year
    "1995"
    127.0.0.1:6379> hdel hh year
    (integer) 1
    127.0.0.1:6379> hlen hh
    (integer) 2
    127.0.0.1:6379> hgetAll hh
    1) "name"
    2) "jinmin"
    3) "month"
    4) "3"
    127.0.0.1:6379> hkeys hh
    1) "name"
    2) "month"
    127.0.0.1:6379> hvals hh
    1) "jinmin"
    2) "3"



6. Expire


  • 설정한 시간내로 key를 자동 삭제

  • (주의) 바로 set, getset의 명령어를 expire 명령어 이후에 key에 다시 적용하면 expire 명령은 무효

    • 즉, 새로 expire를 설정해야한다. incr, lpush, sadd, zadd, hset과 같은 명령어는 유지
  • 기본 명령어

    • expire <key> <member> <second> : key에 ttl 설정 (ttl : Time To Live)
    • ttl <key> : 남은 ttl을 초단위로 확인
  • 예제

    127.0.0.1:6379> set a b
    OK
    127.0.0.1:6379> expire a 20
    (integer) 1
    127.0.0.1:6379> ttl a
    (integer) 16
    127.0.0.1:6379> ttl a
    (integer) 13
    127.0.0.1:6379> get a
    "b"
    127.0.0.1:6379> ttl a
    (integer) 8
    127.0.0.1:6379> ttl a
    (integer) 3
    127.0.0.1:6379> ttl a
    (integer) -2
    127.0.0.1:6379> get a
    (nil)
  • 참고 : 사바라다는 차곡차곡 님의 블로그

profile
열심히 해보자9999

0개의 댓글