본문 바로가기
프로그래밍/redis

[Redis] Redis의 기본 명령어

by 사바라다 2020. 8. 7.

[Redis] 캐시(Cache)와 Redis
[Redis] Redis의 기본 명령어
[Java + Redis] Spring Data Redis로 Redis와 연동하기 - RedisTemplate 편
[Java + Redis] Spring Data Redis로 Redis와 연동하기 - RedisRepository 편

안녕하세요. 오늘은 저번 시간에 이어서 Redis에 대해서 추가적으로 알아보는 시간을 가지겠습니다. 오늘 알아볼 내용은 Redis의 기본 명령어입니다. Redis의 자료구조와 명령어는 Redis를 사용하는 Client를 개발할 때에도 사용되므로 잘 알아두어야 합니다. 오늘은 우리가 Redis에서 가장 자주 사용하는 자료구조인 Strings, List, Set, Sorted Set, Hash, expire 의 기본 명령어를 알아보는 시간을 가지도록 하겠습니다.

Redis 기본 자료 구조 및 명령어

Strings

일반적으로 사용되는 Key - Value의 형식을 가지는 자료구조입니다. key와 value의 관계는 1 : 1이 됩니다.

기본 명령어 - get, set, del

  • get key - key에 해당하는 value를 가져옵니다.
  • set key value - key에 value를 저장합니다.
  • del key - key를 삭제합니다.

get, set 명령어
삭제(del) 후 get 명령어

List

Redis Collection 중 하나인 List입니다. List는 redis Strings의 묶음 자료구조입니다. Last 또는 First에 삽입, 삭제가 가능합니다. Redis는 List의 자료구조로 Quick List를 사용한다고 합니다. Quick List의 자세한 내용은 문서를 참고해주세요.

기본 명령어 - lpush, rpush, lpop, rpop, lrange

  • lpush key value - List의 index 0 쪽으로 데이터를 넣습니다. ( redis의 list index는 0부터 시작합니다.)
  • rpush key value - List의 index last 쪽으로 데이터를 넣습니다.
  • lrange key start end - List의 start부터 end까지의 element를 반환합니다.
  • lpop key - List의 index 0의 데이터를 뺍니다.
  • rpop key - List의 index last의 데이터를 뺍니다.

List 만들기 lpush "Hello" ( lpush or rpush )
key의 길이 확인 (llen)
list의 range 검색(lrange)
list 1개씩 뽑기 ( rpop or lpop )

Set

중복되지 않는 값을 데이터로 가지는 Collection입니다. 때문에 동일한 값을 입력하면 결과적으로 하나의 값만 남습니다. 또한 Set은 집합이라는 의미에서 value를 member라 부릅니다. 해당 Collection은 순서를 가지지 않습니다. 이런 Set Collection은 좋아요를 누른 사람 수, 특정 상품을 본 사람 수 등을 나타내는데 사용될 수 있습니다.

기본 명령어 - sadd, srem, smembers, scard, spop

  • sadd key member - set에 value를 하나 추가합니다.
  • srem key - set에서 key를 삭제합니다.
  • smembers key - set에 속해있는 모든 member를 조회합니다.
  • scard key - set에 속해있는 member을 갯수를 구합니다.
  • spop - set에서 무작위로 member를 가져옵니다.

set member 추가(saad)
set의 크기 확인 (scard)
set의 member 확인 (smembers)
set의 member 하나 삭제(srem) 후 멤버 확인(smembers) 

Sorted Set

중복되지 않는 값을 데이터로 가지는 Collection입니다. 또한 가중치(Score)를 가지고 있고 가중치(Score)에 따른 정렬된 순서를 가지고 있습니다. Score가 같으면 value로 sort됩니다. Value는 중복되지 않으며 Score는 중복될 수 있습니다.

Sorted Set은 특정 API의 TPS를 조절 하거나 Ranking 등에 이용될 수 있습니다.

기본 명령어 - zadd, zcard, zrange, zrangebyscore

  • zadd key score member - 집합에 Score와 Value를 추가합니다.
  • zcard key - 집합 속에 있는 member의 갯수를 조회합니다.
  • zrange key start stop - index를 범위로하여 조회합니다.
  • zrangebyscore key min max - socore를 범위로하여 조회합니다.

sorted set member 추가 ( zadd )
sorted set 길이 (zcard)
o를 2의 score로 할당 후 범위 탐색, 'o'가 'l'보다 낮은 스코어를 가짐으로 순서가 바뀜.
H 삭제(zrem)후 확인 (zrange)

Hash

내부에 또 다른 Key - value로 이루어진 자료구조입니다. Hashes는 key 하나에 여러개의 field와 value로 구성됩니다. key 하나에 field와 value 쌍을 40억개(4,294,967,295)까지 저장 가능합니다.

기본 명령어 - hset, hget, hdel, hlen, hgetAll, hkeys, hvals

  • hset key field value : key에 field와 value를 쌍으로 저장합니다.
  • hget key field : key에서 field로 value를 가져옵니다.
  • hdel key field : key에서 field를 삭제합니다.
  • hlen key : field의 갯수를 반환합니다.
  • hgetAll key : field와 value를 모두 반환합니다.
  • hkeys key : 모든 field를 반환합니다.
  • hvals key : 모든 value를 반환합니다.

hash 구조로 key를 생성, field 1: name, value 1 : sabarada, field 2 : age, value 2 : 29
value 확인 ( hget )
field 삭제(hdel) 후 확인
field 갯수 확인 (hlen)
모든 데이터 확인 (hgetAll)
모든 key 확인 (hkeys)
모든 value 확인 (hvals)

  1. expire

expire는 지정한 시간 이후 key를 자동 삭제하는 명령어입니다. key-value 쌍에 Time To Live를 설정할 수 있습니다. 사용에 주의해야할 점이 있습니다. 바로 set, getset의 명령어를 expire 명령어 이후에 key에 다시 적용하면 expire 명령은 없어진다는 것입니다. 따라서 새로 expire를 설정해야합니다. incr, lpush, sadd, zadd, hset와 같은 명령어는 그대로 유지힙니다.

명령어 - expire, ttl

  • expire key member second : key에 ttl을 설정합니다.
  • ttl key : 남은 ttl을 초단위로 확인합니다.

expire와 tll 명령어로 Time To Live 확인

마무리

오늘은 Redis의 자료구조와 기본 명령어에 대해서 알아보는 시간을 가졌습니다. Redis에는 많은 자료구조와 많은 명령어가 있습니다. 본인이 잘 알고 잘 사용하기만 한다면 원하는 퍼포먼스와 원활한 Redis를 운영할 수 있습니다.

모두 화이팅 하시기 바랍니다.

감사합니다.

참고

http://redisgate.kr/redis

댓글