티스토리 뷰

Strings 관련 명령어 예제

 

- SET, GET

설명(SET) : 가장 기본적인 데이터 입력 형태로 키와 값을 입력한다. 만약 키에 값이 이미 지정되어 있으면 타입에 상관없이 덮어씌워 진다.
설명(GET)
가장 기본적인 데이터 출력 형태이며 키에 값이 없으면 nil을 반환한다

시간복잡도 : O(1)

redis-cli > SET key value [EX seconds] [PX milliseconds] [NX|XX]

옵션 :

   - EX seconds : 만료시간을 초 단위로 설정
   - PX milliseconds : 만료시간을 밀리초 단위로 설정
   - NX : 값이 존재 하지 않을 경우에만 키 값에 값을 저장
   - XX : 값이 존재할 경우에만 키 값에 덮어씀

redis-cli > GET key

 redis > SET test "hello"     // 기본적인 set 저장 형태
 "OK"
 redis > SET test2 "hello" EX 10     // 10초 후에 데이터 소멸
 "OK"
 redis > SET test3 "hello" PX 5000     // 5초 후에 데이터 소멸
 "OK"
 redis > SET test4 "hello" NX     // test4키는 값이 존재하지 않으므로 저장
 "OK"
 redis > SET test5 "hello" EX 10     // test5키는 값이 존재하지 않으므로 저장을 하지 못함
 "(nil)"
 redis > GET test
 "hello"

 

- SETEX

설명 : 문자열 값을 보관할 키를 설정하고 초 단위로 시간을 설정 합니다.

시간복잡도 : O(1)

redis-cli > SETEX key seconds value

 redis > SETEX test1 10 "hello"
 "OK"
 redis > ttl test1
 (integer) 10
 redis > GET test1
 "hello"
 // After 10 seconds //
 redis > GET test1
 "(nil)"

 

- SETNX

설명 : 키가 존재하지 않을 경우에만 값을 지정할 수 있다. (SET if Not eXists) 의 줄임말이다.

시간복잡도 : O(1)

redis-cli > SETNX key value

 redis > SETNX test1 "hello"
 (integer) 1  // Success
 redis > SETNX test1 "world"
 (integer) 0  // Fail
 redis > GET test1
 "hello"

 

 

 

STRLEN

설명 : 키에 저장된 값의 길이를 리턴한다. 0을 리턴할 때는 키가 존재하지 않는다

시간복잡도 : O(1)

redis-cli > STRLEN key

 redis > SET test1 "hello"
 "OK"
 redis > STRLEN test1
 (integer) 5
 redis > STRLEN test2
 (integer) 0

 

- SETRANGE, GETRANGE

설명(SETRANGE) : 값의 전체 길이에 대해 지정된 오프셋에서 시작하여 키에 저장된 문자열의 일부를 덮어 쓴다.
설명(GETRANGE) : 키에 저장되어 있는 값을 잘라서 가져온다.

시간복잡도 : O(N)

redis-cli > SETRANGE key offset value

redis-cli > GETRANGE key start end

 

 redis > SET test "hello world"
 "OK"
 redis > SETRANGE test 6 "Redis"
 "hello Redis"
 redis > GETRANGE test 0 -1
 "hello Redis"
 redis > GETRANGE test 0 4
 "hello"
 redis > GETRANGE test -3 -2
 "di"
 redis > GETRANGE test -5 -1
 "Redis"

 

- INCR, DECR

설명(INCR) : 키에 저장된 수를 1씩 증가 시킵니다. 값이 없으면 0부터 시작합니다.
설명(DECR) : 
키에 저장된 수를 1씩 감소 시킵니다. 값이 없으면 0부터 시작합니다.

시간복잡도 : O(1)

redis-cli > INCR key

redis-cli > DECR key

 

 redis > INCR aaa
 (integer) 1
 redis > INCR aaa
 (integer) 2
 redis > INCR aaa
 (integer) 3
 redis > DECR aaa
 (integer) 2
 redis > DECR aaa
 (integer) 1
 redis > DECR aaa
 (integer) 0

 

 

- INCRBY, DECRBY

설명(INCR) : 키에 저장된 수를 지정된 값을 증가 시킵니다. 값이 없으면 0부터 시작합니다.
설명(DECR) : 
키에 저장된 수를 지정된 값을 감소 시킵니다. 값이 없으면 0부터 시작합니다.

시간복잡도 : O(1)

redis-cli > INCRBY key increment

redis-cli > DECRBY key increment

 

 redis > INCR aaa
 (integer) 1
 redis > INCRBY aaa 10
 (integer) 11
 redis > DECRBY aaa 5
 (integer) 6

 

 

 

- INCRBYFLOAT

설명 : 키에 저장된 수를 지정된 값 만큼 key에 소수점을 나타내는 문자열을 증가, 감소 시킵니다. 키가 존재하지 않으면 0으로 설정됩니다. 다음 조건 중 하나가 발생하면 오류가 반환 됩니다.
 - 키에 잘못된 유형의 값이 들어 있을 경우(문자열이 아님)
 - 현재의 키 내용 또는 지정된 증가분은 배정 밀도 부동 소수점 수로 구문 분석 할 수 없습니다.

시간복잡도 : O(1)

redis-cli > INCRBYFLOAT key increment

 

 redis > SET aaa 10.5
 "OK"
 redis > INCRBYFLOAT aaa 0.1
 "10.6"
 redis > INCRBYFLOAT aaa -5
 "5.6"

 

 

 

 

- MSET, MGET

설명(MSET) : 지정된 키를 각각의 값의 값으로 설정합니다. MSET은 일반 SET와 마찬가지로 기존 값을 새로 바꾼다. 기존 값을 덮어 씌지 않으려면 MSETNX를 참조
설명(MGET) : 지정된 모든 키의 값을 반환합니다. 키의 값이 없으면 nil이 리턴

시간복잡도 : O(N)

redis-cli > MSET key value [key value...]

redis-cli > MGET key [key ...]

 

 redis > MSET key1 "hello" key2 "hello2" key3 "hello3"
 "OK"
 redis > MGET key1 key2 key3
 1) "hello"
 2) "hello2"
 3) "hello3"


 

 

 

- MSETNX

설명(MSETNX) : 지정된 키를 각각의 값으로 설정합니다. MSETNX는 단 하나의 키가 이미 존재하면 아무 작업도 수행하지 않습니다.
시간복잡도 : O(N)

redis-cli > MSETNX key value [key value...]

redis-cli > MGET key [key ...]

 

 redis > MSETNX key1 "hello" key2 "hello2" key3 "hello3"
 (integer) 1
 redis > MSETNX key3 "hello3" key4 "hello4" key5 "hello5"
 (integer) 0

 

 

 

- PSETEX

설명(PSETEX) : 만료시간이 초 대신 밀리 초 단위로 지정된다는 차이점만 제외하고 SETEX와 똑같이 작용
시간복잡도 : O(1)

redis-cli > PSETEX key milliseconds value

 

 redis > PSETEX key1 1000 "hello" /* 1초로 지정 */
 "OK"

 

 

 

- GETSET

설명(GETSET) : 값을 리턴 후 특정 값으로 재 설정 합니다. 기존에 지정된 값이 없으면 nil을 반환 후 새로운 값을 저장
시간복잡도 : O(1)

redis-cli > GETSET key value

 

 redis > SET key "hello"
 "OK"
 redis > GETSET key "mello"
 "hello"
 redis > GETSET key2 "hello" /* 값이 없을 경우는 nil을 반환 후 새로운 값을 저장 */
 (nil)
 redis > GET key2
 "hello"

 

 

 

- APPEND

설명(APPEND) : key가 이미 있고 문자열인 경우에 문자열 끝에 값을 추가합니다. 키가 존재하지 않으면 새로 생성되고 빈 문자열로 설정되므로 APPEND는 SET 과 유사합니다.
시간복잡도 : O(1)

redis-cli > GETSET key value

 

 redis > EXISTS key1
 (integer) 0
 redis > APPEND key1 "Hello"
 (integer) 5
 redis > APPEND key1 "World"
 (integer) 11
 redis > GET key1
 "hello world"