본문 바로가기

반응형

레디스

20.Redis, 레디스 인코딩 중 리스트 데이터 인코딩 에 대해서 알아볼께요.^^ 리스트 데이터 인코딩에 대해서.. 버전 3.2.0 이전 ZIPLIST(small lists), LINKEDLIST 이었음. OBJ_ENCODING_ZIPLIST OBJ_ENCODING_LINKEDLIST but, 버전 3.2.0 부터 QUICKLIST하나로 통일되어 사용됨. OBJ_ENCODING_QUICKLIST 인코딩 타입에 대한 선언 소스 코드 server.h 인코딩에 대한 설명 레디스 버전 3.2.0 이전 OBJ_ENCODING_ZIPLIST member 갯수가 512개 까지이거나, 값의 길이가 64까지는 ziplist이다. 이것은 redis.conf에 list-max-ziplist-entries 512, list-max-ziplist-value 64 로 설정할 수 있다. OBJ_ENCODING_.. 더보기
19.Redis, 레디스 인코딩 중 문자열 데이터 인코딩 에 대해서 알아볼께요.^^ 레디스 인코딩에 대해서.. Redis 는 데이터의 주 저장소로 메모리를 사용함. 메모리 운영 체제의 관점에서 한정적인 자원이며 매우 비싼 리소스임. Redis 개발자는 제한적인 환경에서 데이터를 효율적으로 저장하기 위해서 인코딩을 사용함. 문자열 데이터 인코딩 문자열을 저장하기 위해서 3가지 인코딩을 사용함. OBJ_ENCODING_INT value가 정수임을 나타낸다. 실수(소숫점 포함)는 string으로 분류된다. 단, 숫자가 0으로 시작하면 string이다. 예를 들어 123은 int이고 0123은 embstr이다. 그리고, 64bit 환경에서 long int형의 max 값(9223372036854775807)을 벗어나면 embstr 임. 참고#1) 64bit 환경의 long int형 범위 -9,2.. 더보기
18.Redis, 레디스 객체(Redis Object)에 대해서 알아볼까요? 레디스 객체(Redis Object)에 대해서... Redis 는 저장된 데이터를 관리하기 위하여 redisObject 객체를 사용함. 문자열데이터와 Hash 데이터는 모두 redisObject 객체를 사용하여 저장함. redisObject 가 관리하는 정보 저장된 객체의 데이터형과 인코딩 정보 객체가 참조된 횟수 LRU(Least Recently Used) 시간 정보 레디스객체는 레디스의 거든 모든 소스코드에서 사용됨. 저장된 모든 데이터와 Key 의 표현에 사용됨. 레디스에서 가장 기본적인 데이터 표현 방식이고, 레디스의 내부구조를 이해하기 위해서 가장 중요한 객체이기도함. redisOjbect 구조체(Redis-5.0.5 기준) 콜론(:) 기호 란? 위의 소스에서 콜론 기호는 C 언어의 구조체에서 .. 더보기
17.Redis, 제디스(Jedis) 사용한 간단한 프로그램 예시를 코딩해 볼께요.^^ Redis의 데이터 처리 및 통신 Redis 서버는 기본적으로 TCP/IP 기반으로 데이터를 처리함. 그리고, 클라이언트-서버 방식으로 동작함. 즉, 클라이언트로 부터 요청을 받고 요청에 대한 처리 결과를 돌려주는 구조. 클라이언트 입장에서 네트워크를 통해 Redis 서버로 데이터를 전송하고 수신하는 시간은 실제 데이터를 처리하는 시간에 포함됨. 이를 RTT 로 표기함. RTT 란? Round Trip Time 의 약자임. 네트워크 왕복시간 = 네트워크를 통해서 서버로 명령을 전송하는데 걸리는 시간 + 명령의 처리 결과를 수신하는데 걸리는 시간 제디스(Jedis)를 사용한 간단한 샘플 프로그램 간단한 SET/GET 프로그램 Maven 사용 pom.xml 추가 실행화면 redis-cli 툴을 사용해서 확인.. 더보기
16.Redis, 송/수신 프로토콜에 대해서 알아볼께요.^^ Redis 프로토콜 Redis 서버가 수신하는 모든 명령은 Redis 프로토콜을 통해서 송수신됨. 채널은 TCP/IP이고, Redis 서버 환경설정파일에 기술된 포트를 사용함. 텍스트 기반 프로토콜 프로토콜의 구조 Redis 프로토콜은 binary-safe 함 즉, 전송되는 데이터에 따라서 프로토콜이 오작동하지 않게설계됨. 송신프로토콜 프로토콜은 2부분으로 나눠짐. 전송할 인자의 개수를 표시하는 부분 입력된 인자의 정보는 애스터리스크(*) 문자로 시작 인자의 개수에 해당하는 숫자와 줄바꿈 문자로 이루어짐 입력되는 정보를 표시하는 부분. 인자의 정보는 인자의 길이와 인자 데이터로 이루어짐. 인자 정보의 시작은 달러기호($) 문자로 시작, 두줄로 구성됨. ex) SET thubkey v1 위의 예시는 Red.. 더보기
15.Redis, 클라이언트의 종류에 대해서 간단히 알아볼께요.^^ Redis 클라이언트의 종류 Redis 의 데이터를 저장하고 조회하는 방법은 크게 3가지로 요약됨. Redis 명령행 클라이언트를 사용하는 방법 ex) redis-cli Redis 프로토콜을 사용하여 작성된 클라이언트 라이브러리를 사용하는 방법 ex) jedis(java 에서 사용) Webdis or Mod_redis, Resque 와 같은 플러그인을 사용하는 방법 https://redis.io/clients Higher level libraries and tools 참조 Redis 접속은 Redis 프로토콜을 사용하여 Redis 서버와 직접 통신해야함. Redis 명령행 클라이언트를 사용하는 방법 redis-cli 예시 Redis 프로토콜을 사용하여 작성된 클라이언트 라이브러리를 사용하는 방법 제가 사.. 더보기
14.Redis, Key 관리 명령에 대해서 알아볼께요.^^ Key 관리 명령에 대해서... 레디스에 저장된 Key를 관리하는 명령은 아래와 같다. 삭제 만료 목록조회 데이터형 조회 Key 이동 기타 등등 Key 삭제와 변경 del Redis 에 저장된 Key와 데이터를 삭제하고, 삭제된 Key의 개수를 돌려줌. 만약 Key가 존재하지 않으면 0을 반환함 명령) del [key1] [key2]... 응답) , 삭제된 Key의 수 rename 주어진 Key의 이름을 변경하고 변경결과를 돌려줌. 만약 변경할 Key가 이미 존재하면 0을 반환함. 명령) rename [key] [new key] 응답) 성공하면 OK, 실패하면 ERR Key 만료처리 expire 지정된 Key 에 만료시간을 초(sec) 단위로 설정함. 단, 지정된 Key가 존재하지 않거나 설정에 실패하면.. 더보기
13.Redis, 리스트 데이터에 대해서 알아보자. 리스트에 대해서... 리스트 데이터는 저장 순서를 기억하는 데이터 구조이며, 중복을 허용함. 저장가능한 최대요소 수 2의 32승 - 1 개, 대략적으로 42억개... 구현은 이중 링크드 리스트로 구현되어 있음. 즉, 첫번째(head)요소와 마지막(tail)요소의 조회 시간이 가장 빠르고, 리스트의 중간에 저장된 데이터를 조회하는 시간이 가장 오래 걸리는 특징이 존재함. head 데이터 왼쪽 tail 데이터 오른쪽 lpush left push rpush right push 리스트 데이터의 저장구조 리스트 데이터 구조는 내부적으로 Deque(Double ended queue) 구조를 구현하고 있음. Deque 란? 선형 자료구조인 stack 과 queue 의 특징을 하나로 모은 자료구조 양쪽 방향 모두에서 .. 더보기

반응형