티스토리 뷰
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" |