Key가 100만 단위로 늘어날 경우 성능에 미치는 영향을 테스트 했다. 테스트 환경은 다음과 같다. REDIS 서버 REDIS 클라이언트 언어 100만개와 1000만개의 데이터로 테스트를 진행했다. Key를 입력하는 데도 시간이 꽤 걸리기 때문에, 파일을 만든다음 벌크(bulk)로 한번에 입력했다. File.open(1million.txt, w) do...
REDIS 소개, 설치, 데이터 타입 테스트REDIS는 BSD 라이센스 기반의 Key-value 캐쉬 & Store 소프트웨어다. String, hash, lists, sets, sorted set, bitmap, hyperloglogs 등 다양한 데이터 구조를 저장할 수 있기 때문에, data structure server라고 부르기도 한다. 메모리에 ...
APPEND key value 사용 가능한 버전 시간 복잡도 만약 key가 이미 존재하고 값이 string 이라면, string의 마지막에 value를 덧 붙인다(append). 만약 key가 없다면, key를 만들고 value를 설정한다. 이 경우 SET과 비슷하게 작동한다.Interger 값 > DEL mystr(integer) 1> EXISTS ...
BLPOP key timeout 2.0.0이후 버전에서 사용 시간 복잡도 BLPOP는 LPOP의 블록킹(blocking) 버전이다. LPOP는 리스트에 데이터가 없으면 즉시 nil을 반환한다. 메시지큐로 REDIS를 사용하는 애플리케이션에서 LPOP를 사용하면, 리스트에 데이터가 있는지를 검사하면서 루프를 돌게 된다. BLPOP를 호출하면, 최소한 하나...
BITCOUNT key BITCOUNT key 2.6.0 부터 지원 시간 복잡도 문자열(string)에서 bit의 숫자를 카운팅한다. 카운터로 널리 사용한다. 이 연산은 문자열에 포함도니 모든 바이트들을 조사한다. 추가적으로 특정 범위의 바이트 조사도 가능하다. 비트의 값이 1로 설정된 갯수> setbit visitor(integer) 0> setbi...
EXPIRE key seconds 1.0.0 버전부터 지원 시간 복잡도 Key에 대해서 timeout을 설정한다. Timeout 시간이 지나면 키는 자동으로 지워진다. 타임아웃 키는 종종 휘발이라고 부르기도 한다. (그냥 타임아웃 키라로 부르련다) TTL을 이용해서 key timeout(삭제)까지 남은 시간을 확인할 수 있다. 설정된 timeout은 D...
HGETALL key 지원 시간복잡도 key이름의 해시에 저장된 모든 필드에 대한 필드 이름과 필드 값을 리턴한다. 해시에 저장된 필드 이름과 값을 배열로 리턴한다. 키가 없다면 빈 값을 리턴한다.redis> HSET address name "yundream"(integer) 1redis> HSET address email "yundream@gmail....
HSET key field value 2.0.0 부터 지원 시간 복잡도 Key의 field에 value를 추가한다. Key가 없다면 해시를 새로 만들어서 설정한다. field가 있다면 덮어쓴다. 1 0 redis> HSET myhash address "seoul"(integer) 1redis> HGET myhash address"seoul"redis> ...
INCR key 1.0.0 이상에서 사용 가능 시간 복잡도 Key 값을 1 증가시킨다. 만약 key가 없다면, 값이 0인 key를 만든 후 INCR 연산을 한다. 값이 더하기 연산을 할 수 없는 타입(string)인 경우 에러를 반환한다. 저장 가능한 타입의 크기는 64 bit signed integers다. 1 더하기 연산이 끝난 현재의 (Interge...
LPOP key 지원 버전 시간 복잡도 LPOP의 L은 List가 아닌, Left다. 리스트(List)에서 왼쪽 첫번째 요소를 꺼낸 후 삭제한다.첫번째 요소를 꺼낸다. 키가 없다면 nil을 반환한다.redis> RPUSH mylist "one"(integer) 1redis> RPUSH mylist "two"(integer) 2redis> RPUSH my...
42 POSTS HERE
REDIS 성능 테스트
Key가 100만 단위로 늘어날 경우 성능에 미치는 영향을 테스트 했다. 테스트 환경은 다음과 같다. REDIS 서버 REDIS 클라이언트 언어 100만개와 1000만개의 데이터로 테스트를 진행했다. Key를 입력하는 데도 시간이 꽤 걸리기 때문에, 파일을 만든다음 벌크(bulk)로 한번에 입력했다. File.open(1million.txt, w) do...
REDIS 소개, 설치, 데이터 타입 테스트
REDIS 소개, 설치, 데이터 타입 테스트REDIS는 BSD 라이센스 기반의 Key-value 캐쉬 & Store 소프트웨어다. String, hash, lists, sets, sorted set, bitmap, hyperloglogs 등 다양한 데이터 구조를 저장할 수 있기 때문에, data structure server라고 부르기도 한다. 메모리에 ...
APPEND key value
APPEND key value 사용 가능한 버전 시간 복잡도 만약 key가 이미 존재하고 값이 string 이라면, string의 마지막에 value를 덧 붙인다(append). 만약 key가 없다면, key를 만들고 value를 설정한다. 이 경우 SET과 비슷하게 작동한다.Interger 값 > DEL mystr(integer) 1> EXISTS ...
BLPOP key [key ...] timeout
BLPOP key timeout 2.0.0이후 버전에서 사용 시간 복잡도 BLPOP는 LPOP의 블록킹(blocking) 버전이다. LPOP는 리스트에 데이터가 없으면 즉시 nil을 반환한다. 메시지큐로 REDIS를 사용하는 애플리케이션에서 LPOP를 사용하면, 리스트에 데이터가 있는지를 검사하면서 루프를 돌게 된다. BLPOP를 호출하면, 최소한 하나...
BITCOUNT key [start end]
BITCOUNT key BITCOUNT key 2.6.0 부터 지원 시간 복잡도 문자열(string)에서 bit의 숫자를 카운팅한다. 카운터로 널리 사용한다. 이 연산은 문자열에 포함도니 모든 바이트들을 조사한다. 추가적으로 특정 범위의 바이트 조사도 가능하다. 비트의 값이 1로 설정된 갯수> setbit visitor(integer) 0> setbi...
EXPIRE key seconds
EXPIRE key seconds 1.0.0 버전부터 지원 시간 복잡도 Key에 대해서 timeout을 설정한다. Timeout 시간이 지나면 키는 자동으로 지워진다. 타임아웃 키는 종종 휘발이라고 부르기도 한다. (그냥 타임아웃 키라로 부르련다) TTL을 이용해서 key timeout(삭제)까지 남은 시간을 확인할 수 있다. 설정된 timeout은 D...
HGETALL key
HGETALL key 지원 시간복잡도 key이름의 해시에 저장된 모든 필드에 대한 필드 이름과 필드 값을 리턴한다. 해시에 저장된 필드 이름과 값을 배열로 리턴한다. 키가 없다면 빈 값을 리턴한다.redis> HSET address name "yundream"(integer) 1redis> HSET address email "yundream@gmail....
HSET key field value
HSET key field value 2.0.0 부터 지원 시간 복잡도 Key의 field에 value를 추가한다. Key가 없다면 해시를 새로 만들어서 설정한다. field가 있다면 덮어쓴다. 1 0 redis> HSET myhash address "seoul"(integer) 1redis> HGET myhash address"seoul"redis> ...
INCR key
INCR key 1.0.0 이상에서 사용 가능 시간 복잡도 Key 값을 1 증가시킨다. 만약 key가 없다면, 값이 0인 key를 만든 후 INCR 연산을 한다. 값이 더하기 연산을 할 수 없는 타입(string)인 경우 에러를 반환한다. 저장 가능한 타입의 크기는 64 bit signed integers다. 1 더하기 연산이 끝난 현재의 (Interge...
LPOP key
LPOP key 지원 버전 시간 복잡도 LPOP의 L은 List가 아닌, Left다. 리스트(List)에서 왼쪽 첫번째 요소를 꺼낸 후 삭제한다.첫번째 요소를 꺼낸다. 키가 없다면 nil을 반환한다.redis> RPUSH mylist "one"(integer) 1redis> RPUSH mylist "two"(integer) 2redis> RPUSH my...