본문 바로가기
Redis

[Redis] 데이터 타입 String

by 신입같은 3년차 2018. 10. 18.

( 출처  http://bcho.tistory.com/654 , http://wiki.pchero21.com/wiki/Redis )


String

일반적인 문자열로 최대 512mbyte 길이 까지 지원한다.
Text 문자열 뿐만 아니라 Integer와 같은 숫자나 JPEG같은 Binary File까지 저장할 수 있다.
String 이라고 해서 문자열만 저장할 수 있는게 아니라, 이진 데이터도 저장이 가능하다.(정수, 실수형이 따로 없다). 

Redis String 사용 관련 document https://redis.io/commands/#string



String 

  • APPEND - 키가 이미 있고 문자열인 경우 문자열의 끝에 추가 , 키가 없으면 입력된 key value를 기준으로 생성
  • SET - 문자열 value를 유지할수 있도록 key value설정 , 키가 이미 있다면 마지막에 Set한 값으로 덮어쓰고 라이브 시간은 마지막 Set작동시 폐기됨.
  • GET - 해당 key값이 가지고 있는 value값을 가져온다 , 키가 없다면 특수 값 nil을 반환한다. 또한 Get은 문자열만 지원하기때문에 문자열이 아닌 다른 데이터 타입의 key를 쓴다면 오류가 발생한다. 
  • MSET - 지정된 키를 해당 값으로 설정한다 . 기존의 Set과 같이 키가 있다면 값을 덮어쓴다.
  • MGET - 지정된 모든 키의 값을 반환한다 , 키가 없다면 nil이 발생한다. return type array
  • DECR - 키에 저장된 숫자를 하나씩 줄인다. 단, 정수로 표시할 수 있는 문자열이어야 한다. 키가 없다면 default값으로 0으로 설정된 값부터 시작한다.
  • DECRBY - DECR과 비슷하지만 감소시킬 step을 직접 지정 가능하다.
  • INCR - 키에 저장된 숫자를 하나씩 증가시킨다. 단, 정수로 표시할 수 있는 문자열이어야 한다 . 키가 없다면 default값으로 0으로 설정도니 값부터 시작한다.
  • INCRBY - INCR과 비슷하지만 증가시킬 step을 직접 지정 가능하다.
  • INCRBYFLOAT - 키에 저장된 소수점 번호를 나타내는 문자열을 지정된 step만큼 증가시키거나 감소시킨다.
  • SETNX - 키가 없는경우 key value로 설정한다. 하지만 키가 이미 값을 가지고 있다면 SET과 다르게 새로운 값으로 덮어 쓰지 않습니다.
  • SETRANGE - 키에 저장된 문자열의 일부를 지정된 offset에서 시작하여 전체 값의 길이로 덮어쓴다. 존재하지 않는 키는 빈 문자열로 간주하고 오프셋값으로 설정할수있는부분만 지정하고 나머지 부분은 0바이트 패딩으로 저장한다.
  • STRLEN - 키에 저장된 문자열 값의 길이를 반환한다 . key의 value가 String타입이 아니라면 오류를 반환한다.
# APPEND
127.0.0.1:6379> SET myName Choi ( 자기 이름 )
127.0.0.1:6379> SET myName YunJin ( 자기 이름 )

# SET
127.0.0.1:6379> SET myAge 26 ( 자신의 나이 )

# GET
127.0.0.1:6379> GET myName # "ChoiYunJin" 출력
127.0.0.1:6379> GET myAge  # "26" 출력

# MSET
127.0.0.1:6379> MSET firstName "YunJin" lastName "Choi"

# MGET - return array
127.0.0.1:6379> MGET firstName  lastName
# 1) "YunJin" 출력
# 2) "Choi" 출력

# DECR
# index라는 key가 없기 때문에 index를 0으로 세팅한후 감소하여 -1이 출력
127.0.0.1:6379> DECR index
# (integer) -1 출력

127.0.0.1:6379> GET index
# "-1" 출력

# DECRBY
# 기존에 -1인 index를 STEP 3 만큼 감소 하여 -4 출력
127.0.0.1:6379> DECRBY index 3
# (integer) -4 출력

# INCR - 기존의 index 값 -4 에서 증가시킨 -3
127.0.0.1:6379> incr index
(integer) -3

# INCRBY 기존의 index 값에서 STEP 3 만큼 증가시킨 값 0
127.0.0.1:6379> incrby index 3
(integer) 0

# INCRBYFLOAT 기존의 index값을 STEP 0.1 만큼 증가 decrbyfloat는 없고 STEP값의 양,음 여부에 따라 값 변경
# 주의사항 : 한번 incrbyfloat로 변경한값은 incre , decr로 변경 불가.
127.0.0.1:6379> incrbyfloat index 0.1
"0.1"

#SETNX ( SET if Not eXists ) - 원래 SET은 마지막 값으로 덮어 쓰지만 SETNX를 사용할경우 키가 있다면 덮어쓰지 않는다.
127.0.0.1:6379> setnx myName "change"
(integer) 0
127.0.0.1:6379> get myName
"ChoiYunJin"

#SETRANGE - 해당 key값의 offset부터 문자열 길이만큼 변경.
127.0.0.1:6379> setRange myName 0 "KIM "
(integer) 10
127.0.0.1:6379> get myName
"KIM YunJin"

#STRLEN
127.0.0.1:6379> STRLEN myName
(integer) 10
String 관련 명령어는 더 많이 존재하지만 필수적으로 쓸만할것들만 제 개인취향에 맞게 골라내서 테스트해보도록 하겠습니다.

더많은 명령어가 궁금하신분은 위에 String document에 간단한 예제가 잘나와있으니 알맞게 사용하시면 될 것 같습니다.

반응형

'Redis' 카테고리의 다른 글

[Redis] 데이터 타입 Sets  (0) 2018.10.18
[Redis] 데이터 타입 Lists  (0) 2018.10.18

댓글