'프로그래밍/서버 프로그래밍'에 해당되는 글 3건

  1. 2016.02.21 WAN과 LAN. MAN
  2. 2016.01.29 쿠키(cookie)와 세션(Session) (2)
  3. 2016.01.21 redis란?


원본 출처 : 

http://mindnet.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-6%ED%8E%B8-WAN-%EC%9D%B4%EB%9E%80-%EC%9B%90%EA%B1%B0%EB%A6%AC-%ED%86%B5%EC%8B%A0%EB%A7%9D




이젠 LAN과 MAN에 대해서 알아봤으니 WAN 에 대해서도 알아봐야 겠죠?

WAN 이란 녀석은 Wide Area Network 로써 " LAN 과 LAN을 연결하는, 즉 서로 멀리 떨어진 지역의 네

트워크를 연결해주게 됩니다"

즉, 우리는 WAN 을 통해 회사와 회사, 나라와 나라, 대륙과 대륙을 연결 해준다 보시면 됩니다

인터넷에 접속 한다라는 말은 WAN을 이용한다 보시면 되겠죠?



본격적으로 WAN에 대해 알아 보겠습니다.


지구촌 시대라는 말, 전 세계의 많은 지역과 인터넷이나 전화를 통해 통신 할 수 있습니다.

바로 네트워크가 가능하기 때문이지요, 한정적인 범위에서 사용 되는 네트워크가 LAN이라면

넓은 범위에서 사용 되는 네트워크가 WAN(Wide Area Network) 입니다.


Communication(통신)은 장비, 기기간에 정보를 네트워크를 통하게 됩니다.  즉 누구라도 네트워크에 

연결 되어 있다라고 하면 통신이 가능하게 되는 것이지요


멀리 떨어진 상대와 통신하기 위한 네트워크를 WAN 또는 광역 네트워크라고 합니다.

하나의 가정, 학교, 회사내의 빌딩에서 장비간에 통신에 사용 되는 네트워크를 LAN ( Local Area Network) 

라 하면, WAN은 학교와 학교, 회사와 회사, 나라와 나라를 연결 하는 네트워크가 WNA 입니다.



LAN과 WAN의 차이점으로는,

LAN은 거리가 비교적 짧기 때문에 고속 전송( 일반적으로 100Mbps 의 속도 )를 가지며

초기 설치 비용이 많으며 유지비용이 적은 LAN은 관리자가 직접 관리하는 만큼, 자유롭게 네트워크를 구축 

할수 있게 됩니다.


WAN은 물리적으로 넓은 범위를 가지기 때문에 고속 전송이 어려우며(수십 Kbps, 전용선 10~100Mbps)

ISP ( Internet Service Provider ) 인터넷 제공업체 에서 관리하며

허가 없이 네트워크를 구축 할수는 없지만 전문 업체( 우리나라에선 대표적인 KT, SK, LG )  관리하기 

문에 관리가 용이하다라고 할수 있습니다.


또한 WAN은 크게 두 종류로 분류할수 있는데, 바로 전용선과 교환회선 방식입니다.

전용선은, 연결 되는 상대를 미리 결정하여 신뢰성이 높고, 향상된 품질로 데이터를 전송 할 수 있으며

고속 전송이 가능하게 됩니다.

교환 회선 방식은 전화망이나 ISDN이 있으며 상대과의 사이에 회선은 연결, Bandwidth(대역폭)을 통해 어떠한 정보라도 전달 가능합니다. 하지만 패킷 교환 방식에 비해 회선 이용도가 낮아 데이터 현재 데이터

통신에는 사용 되지 않습니다.

추가적으로 패킷 교환 방식은 데이터 통신에 사용되는 축적 교환 방식으로, 송신처의 정보를 받아

수신처로 모든 정보를 일정한 길이의 데이터 또는 패킷(Packet)로 나누어 전송하는 방식입니다.



오늘의 정리


  • WAN(Wide Area Network) 는 광대역 네트워크, 광역 종합 통신망, 원거리 통신망 이라 불리우며

한 국가나 한 대륙 또는 전세계에 걸친 넓은 지역의 수많은 컴퓨터들이 연결 되어 있는 통신 망을 나타 낸다.

WAN은 주로 LAN이 모여 그들이 고속 전송 가능한 회선으로 기기 들간에 접속 되는 형태이며

우리가 흔히 말하는 인터넷(INTERNET)도 WAN으로 볼 수 있으며 유무선 통신 이외에 인공위성 같은 무선 

통신 또한 WAN 으로 연결된 네트워크라고 할수 있습니다.


http://gmng.tistory.com/52


LAN

LAN(Local Area Network)는 작은범위의 컴퓨터 네트워크를 말한다.

이더넷으로 구성되어 있어 물리계층(1계층)과 데이터링크 계층(2계층)과 관련있다.

LAN을 구축하는 환경을 만들기 위해서는 UDP케이블, LAN카드, 스위치가 필요하다.

LAN에서는 데이터를 전송할 시에는 브로드캐스트 방식으로 전달한다.

케이블구분

다이렉트 케이블은 PC 단말과 스위치, 스위치와 라우터간 접속용으로 사용된다.

(간단하게 다른 계층간 연결을 위해 사용된다.)


크로스 케이블은 스위치 간이나 라우터와 PC단말을 직접 연결할 때 사용된다.

(같은 계층끼리 혹은 1계층과 3계층을 이을시 사용된다.)



MAN(Metropolitan Area Network)
LAN보다 큰 지역을 지원.
국제 표준안은 DQDB(Distributed Queue Dual Bus)
이 규격은 전송 방향이 다른 두 버스로 모든 호스트를 연결하는 구조.


WAN

WAN이란 멀리 떨어진 LAN이나 내선 전화망을 상호 연결하기 위한 다리역할을 하는 광범위 대규모 네트워크이다.

보통 KT, SK, LG같은 전기 통신업자가 운영하고, 우리는 서비스 요금을 지불하고 WAN회선을 사용한다.

WAN 에서는 데이터를 point to point 방식으로 주고 받는다.


WAN 구성요소





① 엑세스라우터 : WAN에 접속하기 위한 라우터이다.


 회선종단장치 : LAN과 WAN을 구분 짓는 장치이다. 액세스 라우터의 WAN쪽 인터페이스 까지 WAN이다. 

보통 WAN전송방식과 LAN전송방식을 변환시킨다. 

예를 들면 데이터가 광케이블로 들어왔다면 LAN에서 사용하는 UTP케이블 전송 방식으로 바꾸어야 한다.

대표적인 회선종단장치에는 ONU, 모뎀, TA, DSU가 있다.

[ONU?]

 액세스 회선 : WAN 서비스를 이용하기 위해 WAN 중계국까지 접속하는 회선이다.


 WAN중계망 : 출발지와 목적지(액세스 포인트 사이)를 중계해주는 역할을 한다.


IP VPN과 인터넷 VPN

IP VPN은 통신사업자가 독자적으로 구축한 폐쇄 IP망입니다. 중.대규모 크기에 보안성과 품질성이 높습니다.

인터넷 VPN은 인터넷상에서 구현된 VPN(Virtual Private Network,가상 사설망)입니다. 보통 VPN장치 사이가 가상의 암호화 터널로 되어있습니다.

소규모 크기의 네트워크용 으로써 품질은 낮지만 비용도 그만큼 쌉니다.


인터넷

컴퓨터 네트워크를 상호 연결시킨 세계 규모의 일반 공중 네트워크입니다.

ISP(Internet Service Provider,인터넷 서비스 제공자)는 각 ISP간 상호 접속점을 공유하여 인터넷에 접속합니다.







'프로그래밍 > 서버 프로그래밍' 카테고리의 다른 글

WAN과 LAN. MAN  (0) 2016.02.21
쿠키(cookie)와 세션(Session)  (2) 2016.01.29
redis란?  (0) 2016.01.21
Posted by GENESIS8

댓글을 달아 주세요

출처 : 위키백과
쿠키(cookie)란 하이퍼 텍스트의 기록서(HTTP)의 일종으로서 인터넷 사용자가 어떠한 웹사이트를 방문할 경우 그 사이트가 사용하고 있는 서버에서터넷 사용자의 컴퓨터에 설치하는 작은 기록 정보 파일을 일컫는다. '쿠키'라는 이름은 그림 동화 '헨젤과 그레텔'에서 가져온 것이다. 헨젤과 그레텔이 지나온 길을 표시하기 위해 쿠키 조각을 떨어뜨리며 표시했다는 이야기에서 따온 것이다. HTTP 쿠키, 웹 쿠키, 브라우저 쿠키라고도 한다. 이 기록 파일에 담긴 정보는 인터넷 사용자가 같은 웹사이트를 방문할 때마다 읽히고 수시로 새로운 정보로 바뀐다. 이 수단은 넷스케이프의 프로그램 개발자였던 루 몬툴리(Lou Montulli)가 고안한 뒤로 오늘날 많은 서버 및 웹사이트들이 브라우저의 신속성을 위해 즐겨 쓰고 있다. 쿠키는 소프트웨어가 아니다. 쿠키는 컴퓨터내에서 프로그램처럼 실행될 수 없으며 바이러스를 옮길 수도, 악성코드를 설치할 수도 없다. 하지만 스파이웨어를 통해 유저의 브라우징 행동을 추적하는데에 사용될 수 있고, 누군가의 쿠키를 훔쳐서 해당 사용자의 웹 계정 접근권한을 획득할 수도 있다.





출처 : http://crynut84.tistory.com/74

#1. 웹 서버 동작 원리

웹 사이트 상태관리의 필요성을 알기 위해 웹 서버와 클라이언트(웹 브라우저)가 어떠한 방식으로 동작 하는지를 먼저 알아 보겠습니다.


 

Fig1을 보면 아주 간단한 원리로 동작 하는 것을 알 수 있는데요. 클라이언트가 HTTP 프로토콜을 사용하여 웹 서버로 요청(Request)을 하게 되면 웹 서버는 해당 하는 HTML을 웹 브라우저로 전송 해 주고 웹 브라우저는 응답(Response) 받은 HTML을 파싱하여 사용자에게 보여주게 됩니다. 여기서 ‘요청’이란 우리가 웹 브라우저의 주소 표시줄에 http://crynut84.tistory.com이라고 입력 하는 행위나 웹 사이트의 링크를 마우스로 클릭하는 행위 등을 말합니다.

 

웹 사이트는 다시 정적인 웹 사이트와 동적인 웹사이트로 나눌 수 있습니다. 정적인 웹 사이트는 웹 서버에서 .HTML 파일을 완성된 .HTML 파일을 가지고 있다가 클라이언트의 요청이 있을 시 해당하는 .HTML 파일을 돌려 주는 형태입니다. 당연히 HTML 페이지의 내용들은 이미 결정 되어있어 있으므로 클라이언트의 상태, 방문정보, 시각등의 내용에 관계없이 항상 동일한 HTML 페이지를 보여줍니다. 요즘은 이런 웹사이트는 거의 없을 듯 합니다.

 

동적인 웹 사이트는 사용자의 액션에 따라 웹 사이트가 다르게 동작 하는 것을 말합니다. 예를들어 요즘 웹 사이트는 거의 로그인이라는 인증 과정을 거치게 되고, 로그인을 하면 ‘전호진님 환영합니다’라고 환영 인사도 해줍니다. 또한 게시판은 검색어에 따라 다른 결과를 보여주게 되고, 사용자 입맛에 맛게 정렬도 할 수 있습니다. 이와같이 요즘 일반적으로 볼 수 있는 사용자와 웹사이트가 서로 상호작용을 하는 웹 사이트를 동적인 웹사이트라고 합니다.

 

동적인 웹사이트를 만드는 기술은 ASP.NET, JSP, ASP, PHP, CGI등 여러 가지가 있습니다. 마이크로소프트의 동적인 웹사이트를 만드는 기술인 ASP.NET의 동작 원리(Fig2)를 보면 정적 웹사이트와 조금 다른 것을 알 수 있는데요.

 

클라이언트가 요청하게 되면 웹 서버는 요청에 대한 적절한  HTML을 새롭게 생성 합니다. 요청에 대한 일련의 처리(로직 수행)를 수행하게 되고 처리 결과를 다시 클라이언트에 돌려 주게 되는데 동적인 웹 사이트라고 해도 클라이언트가 받는 최종 응답은 정적인 HTML 페이지입니다. 예를들어 게시판에 여러 게시글이 있는데 사용자가 ASP.NET을 검색어로 입력하고 검색 버튼을 누르게 되면 이 요청을 웹서버가 받아서 게시글 중 ASP.NET이 들어간 결과만 찾아서 형식에 맞는 HTML을 구성하게 되고 클라이언트에 응답하주게 되는 것입니다. 이렇게 동적인 처리를 위해 ASP.NET과 같은 웹 기술이 필요하게 되고, 모든 처리는 웹 서버에서 수행되며, 클라이언트의 입장에서는 정적인 웹 사이트와 동일하게 웹 서버에 요청을 하고 응답받은 결과를 파싱하여 보여 주게 됩니다.

 

#2. 상태 관리(State Management)

웹 사이트를 사용하는 사용자는 HTTP GET방식이나 HTTP POST방식을 사용하여 웹 서버로 페이지를 요청하게 되고, 웹 브라우저는 웹 서버에서 응답받은 HTML을 파싱하여 렌더링하게 됩니다. 이러한 일련의 주기를 ‘라운드트립(Round Trip)’ 이라고 합니다.그런데 HTTP 프로토콜은 상태를 저장 할 수 없는 프로토콜입니다. 이 말은 클라이언트의 요청이 왔을 때 웹 서버는 해당 요청에 대한 응답인 HTML을 보내주고 연결을 끊어버린다는 것입니다. 그렇기 때문에 라운드트립 시 페이지에 있는 컨트롤의 사용자 입력정보나 페이지의 정보들이 모두 손실 되게 됩니다.  예전에 사용하던 정적인 웹사이트(일방적으로 보기만 하는 웹사이트)에서는 문제가 되지 않지만 동적인 웹사이트에서는 사용자의 요청이나 컨트롤의 입력정보를 유지할 필요가 있기 때문에 ASP.NET은 상태 관리를 할 수 있는 여러가지 기능을 제공합니다.

 

상태관리의 정보를 저장하는 장소에 따라 두가지로 분류 할 수 있는데, 웹 서버에 저장하는 경우와, 클라이언트에 저장하는 경우가 있습니다.

▶ 상태 정보를 클라이언트에 저장하는 방식

  • 뷰 상태(View State)
  • 컨트롤 상태(Control State)
  • 숨겨진 필드(Hidden Field)
  • 쿠키(Cookie)
  • 쿼리 문자열(Query String)

▶ 상태 정보를 웹 서버에 저장하는 방식

  • 응용 프로그램 상태(Application State)
  • 세션(Session)
  • 프로필 속성(Profile Property)
  • 데이터베이스(Database)

두가지 방식은 장단점이 존재 하는데요. 일반적으로 데이터가 작고, 중요하지 않은(보안 등의 이유)정보는 클라이언트 측에서 관리하고, 나머지는 웹 서버에서 관리 하는 것이 좋습니다. 여러가지 상태관리 기능 중 Cookie와 Session에 관해 자세히 알아보겠습니다.

 

#3. 쿠키(Cookie)

 

쿠키는 요청 및 응답하는 과정에 포함되는 텍스트 정보이고 쉽게 구현하여 사용 할 수 있는 방법중에 하나입니다. 일반적인 브라우저에서 최대 4KB의 텍스트 정보를 담을 수 있으며 하나의 사이트는 20개만 허용되며, 모든 사이트를 통틀어서 300개로 제한 됩니다. 만약 이 범위를 넘어 더 많이 저장 하려고 할 경우에는 가장 오래된 쿠키부터 삭제되므로 사용의 주의해야하고, 4KB로 비교적 작은 크기만을 저장하기 때문에 적은 양의 데이터나 ID, 최근 읽은 글, 최근 본 상품과 같은 식별자를 저장할 때 사용하는 것이 적합합니다.

 

1. 쿠키의 동작 방식

쿠키는 서버에서 생성하여 클라이언트의 브라우저에서 관리하기 때문에 요청시 쿠키를 생성하고 브라우저를 닫을때 쿠키를 파괴합니다. 응답을 통해 얻어온 쿠키는 만료시간 여부에 따라 클라이언트의 PC에 파일로 저장하게 됩니다.

 

쿠키의 생성 주기를 살펴보면 처음으로 페이지를 요청 할 경우 웹 서버에서는 쿠키를 생성하게 되고, 페이지를 돌려 줄때 HTTP 헤더에 쿠키를 포함하여 돌려 주게 됩니다. 이렇게 넘겨 받은 쿠키는 클라이언트에서 관리 하고 있다가, 다음번 요청때 쿠키를 함께 전송하게 되고, 서버에서는 쿠키 정보를 읽어 이전 상태 정보를 알 수 있게 됩니다. 이때 웹 서버는 정보를 변경 할 필요가 있을때 쿠키를 업데이트하여 다시 변경된 쿠키와 함께 응답하게 됩니다.


2. ASP.NET에서 쿠키 사용

쿠키는 서버로 부터 응답받은 사항이기 때문에 HttpResponse 객체를 통해 클라이언트로 전송 됩니다. 쿠키에 정보를 저장하는 방법은 두가지가 있습니다. Page클래스의 Response 객체를 사용하는 것과 HttpCookie 클래스를 사용하는 방법입니다.

//Response 사용 
Response.Cookies["쿠키명1"].Value = "쿠키 예제;
Response.Cookies["쿠키명1"].Expires = DateTime.Now.AddMinutes(30); 

//HttpCookie 클래스 사용 HttpCookie cookie = new HttpCookie("쿠키명2");
cookie.Value = "쿠키 예제";
cookie.Expires = DateTime.Now.AddSeconds(30); 
Response.Cookies.Add(cookie);

-Code1. 쿠키 저장-

쿠키명1과 쿠키명2라는 이름을 사용하는 쿠키를 생성 하였고 각각 Value 속성을 통해 상태유지에 필요한 값을 넣어 주었습니다. Expires 속성은 만료 기간인데, 이 속성을 설정하면 쿠키가 클라이언트의 컴퓨터의 파일의 형태로 저장됩니다.  만료기간을 설정하지 않은 쿠키는 브라우저의 메모리에서 관리됩니다. Code1에서 쿠키명1은 30분후에 쿠키를 지우며, 쿠키명2는 30초 후에 쿠키를 지우도록 설정 하였습니다. 만료시간이 지난 쿠키는 클라이언트가 쿠키를 생성한 웹 사이트에 다시 요청을 보낼때 삭제됩니다.




출처 : http://88240.tistory.com/entry/Session-%EC%9D%B4%EB%9E%80


세션이란 일정 시간동안 같은 사용자(정확하게 브라우저를 말한다)로 부터 들어오는

일련의 요구를 하나의 상태로 보고 그 상태를 일정하게 유지시키는 기술이라고 한다.

또한 여기서 일정 시간이란 방문자가 웹 브라우저를 통해 웹 서버에 접속한 시점으로부터 웹 브라우저를 종료함으로써 연결을 끝내는 시점을 말하며

즉, 방문가자가 웹서버에 접속해 있는 상태를 하나의 단위로 보고 세션이라고 칭한다는 것.


- 쿠키의 경우는 방문자의 정보를 방문자 컴퓨터의 메모리에 저장하는 것을 말한다

예를 들자면 ID나 비밀번호를 저장하거나 방문한 사이트를 저장하는데에 사용한다.

(IE 인터넷 옵션에서 검색 기록 삭제할때 임시 파일, 열어본 페이지 목룍, 쿠키, 저장된 암호 및 웹 양식 정보 삭제라고 되어있지 아니한가)

- 세션은 방문자의 요청에 따른 정보를 방문자 메모리에 저장하는 것이 아닌 웹 서버가 세션 아이디 파일을 만들어 서비스가 돌아가고 있는 서버에 저장을 하는것을 말한다.


프로세스들 사이에서 통신을 하기 위해 메시지 교환을 통해 서로를 인식한 이후부터 통신을 마칠 때까지의 기간동안 서버에 잠시 방문자 정보를 저장한다는 것.


그래서 쿠키와 달리 세션은 사용자들의 로그인 정보에 대한 보안을 한층 업그레이드 할 수 있어 웹사이트에 방문하여 계속 접속을 유지할 때 이전의 접속 정보를 이용할 수 있는 방법으로 많이들 사용하는 것이다.




1. HTTP Session이란?

1) session이란 서버가 해당 서버(웹)로 접근(request)한 클라이언트(사용자)를 식별하는 방법

2) 서버(웹)는 접근한 클라이언트(사용자)에게 response-header field인 set-cookie 값으로 클라이언트 식별자인 session-id(임의의 긴 문자열)를 발행(응답)한다.

3) 서버로부터 발행(응답)된 session-id는 해당 서버(웹)와 클라이언트(브라우저) 메모리에 저장된다. 이때 클라이언트 메모리에 사용되는 cookie 타입은 세션 종료 시 같이 소멸되는 "Memory cookie"가 사용된다.

4) 서버로부터 발행된 session(데이터)을 통해 개인화(사용자)를 위한 데이터(userInfo 등..)로 활용할 수 있다.


2. HTTP Session 동작 순서

1) 클라이언트(사용자)가 서버로 접속(http 요청)을 시도한다.

2) 서버(웹)는 접근한 클라이언트의 request-header field인 cookie를 확인해 클라이언트가 해당 session-id를 보내왔는지 확인한다.

3) 만약 클라이언트로 부터 발송된 session-id가 없다면, 서버는 session-id를 생성해 클라이언트에게 response-header field인 set-cookie 값으로 session-id(임의의 긴 문자열)를 발행(응답)한다.


방문자가 서버에 접속 시도 후 서버 접근한 클라이언트(방문자)가 seesion id를 보내왔는지 확인 했는데 없다면 서버는 session id를 생성하는 부분을

우리가 많이들 쓰고 있는 session_start()함수인듯 하다.


다른 블로그에서 세션을 등록하기 위해서는 가장먼저 세션을 초기화 하여 세션을 생성하고, 현재의 세션 아이디를 활성화시키기 위해 session_start 함수를 사용한다 했으니...


또한 세션을 등록할때 $_SESSION['변수명'] 이렇게 쓰며


위에 설명중 세션 종료시 같이 소멸된다라고 써있는데 물론 브라우저를 끄며서 종료된다는 개념이지만 우리는

unset($_SESSION['변수명']);와 session_destory();이라는 걸 알고 있지요

(혹시나 하여 간단한 설명을 하자면 좌측은 세션 소멸과 우측은 세션 종료때 사용한다)



'프로그래밍 > 서버 프로그래밍' 카테고리의 다른 글

WAN과 LAN. MAN  (0) 2016.02.21
쿠키(cookie)와 세션(Session)  (2) 2016.01.29
redis란?  (0) 2016.01.21
Posted by GENESIS8

댓글을 달아 주세요

  1. 지나가는 행인 2016.08.12 04:57  댓글주소  수정/삭제  댓글쓰기

    정말 잘 봤습니다!!!이해가 명확히 돼요!

  2. 좋은설명 감사합니다 2017.12.27 09:18  댓글주소  수정/삭제  댓글쓰기

    좋은설명 감사합니다 잘읽다가 갔습니다!

출처 : 

http://www.sqler.com/266239

http://blog.likead.co.kr/?p=72




redis란 무엇일까?

redis란 No SQL의 일종이라고 한다.



NO SQL? 

위키 : 

NoSQL 데이터베이스는 단순 검색 및 추가 작업을 위한 매우 최적화된 키 값 저장 공간으로, 레이턴시와 스루풋과 관련하여 상당한 성능 이익을 내는 것이 목적이다. NoSQL 데이터베이스는 빅데이터와 실시간 웹 애플리케이션의 상업적 이용에 널리 쓰인다.


NO SQL은 Not only SQL의 줄임말로 NoSQL 시스템은 SQL 계열 쿼리 언어를 사용할 수 있다는 사실을 강조한다는 면에서 "Not only SQL(SQL 뿐만이 아니고)"로 불리기도 한다.




redis 자체도 약어라고 하는데

REmote DIctionary Server의 약어라고한다.


Redis는 자주 Memcached와 비교되는 in memory 저장소 이다.


Memcached의 기본적인 특징.

1. 처리 속도가 빠르다.

   - 당연히 데이터가 메모리에만 저장되므로 빠르다. 즉, 속도가 느린 Disk를 거치지 않는다.

2. 데이터가 메모리에만 저장된다.

   - 당연히 프로세스가 죽거나 장비가 Shutdown되면 데이터가 사라진다.

3. 만료일을 지정하여 만료가 되면 자동으로 데이터가 사라진다.

   - 이름에서도 느껴지듯이 Cache이다

4. 저장소 메모리 재사용

   - 만료가 되지 않았더라도  더이상 데이터를 넣을 메모리가 없으면 LRU(Least recently used) 알고리즘에 의해 데이터가 사라진다.


그래서, 보통 대형 포털들에서 Static page, 또는 검색 결과 등을 캐쉬하는데 많이 사용한다.


그런데!!!!


왜!!!!! REDIS가 자꾸 Memchche와 비교되는가?


눈치들 채셨겠지만 거의 98%이상 Memchche와 동일한 기능을 제공한다.(비슷 하니까 비교 하겠지~~~)


그럼 다른 2%는 뭐냐?


이제부터 설명 들어간다..


 Memcached REDIS

처리 속도가 빠르다.

   - 당연히 데이터가 메모리에만 저장되므로 빠르다. 즉, 속도가 느린 Disk를 거치지 않는다.

처리 속도가 빠르다.

   - 당연히 데이터가 메모리+Disk에 저장된다. 그러나, 속도는 Memcached와 큰 차이가 없다.

데이터가 메모리에만 저장된다.

   - 당연히 프로세스가 죽거나 장비가 Shutdown되면 데이터가 사라진다.

데이터가 메모리+Disk에 저장된다.

   - 프로세스가 죽거나 장비가 Shutdown되더라도 Data의 복구가 가능하다.

만료일을 지정하여 만료가 되면 자동으로 데이터가 사라진다.

   - 이름에서도 느껴지듯이 Cache이다

만료일을 지정하여 만료가 되면 자동으로 데이터가 사라진다.

   - 동일한 기능을 지원한다.

저장소 메모리 재사용

   - 만료가 되지 않았더라도  더이상 데이터를 넣을 메모리가 없으면LRU(Least recently used) 알고리즘에 의해 데이터가 사라진다.

저장소 메모리 재사용 하지 않는다.

   - 명시적으로만 데이터를 제거할 수 있다.
 문자열만 지원
문자열, Set, Sorted Set, Hash, List등의 다양한 Data Type을 지원.




[Redis 의 장점]


1. 리스트, 배열 형식의 데이터 처리에 특화됨


– value 값으로 문자열, 리스트, set, sorted set, hash 형 등 여러 데이터 형식을 지원함

리스트 형 데이터의 입력과 삭제가 MySQL에 비하여 10배 정도 빠르다.


2. 여러 프로세스에서 동시에 같은 key에 대한 갱신을 요청할 경우 Atomic처리로 데이터 부정합 방지 Atomic 처리 함수를 제공


3. 메모리를 활용하면서 영속적인 데이터 보존

– 명령어로 명시적으로 삭제하거나 expires를 설정하지 않으면 데이터를 삭제하지 않는다.

– 스냅샷(기억 장치) 기능을 제공하여 메모리의 내용을 *.rdb 파일로 저장하여 해당 시점으로로 복구할 수 있다.


4. 여러 대의 서버 구성


– Consistent hashing 혹은 master-slave 형식으로 구성 가능함

Redis에는 5가지의 데이터 타입이 존재한다. (Strings, Lists, Sets, Sorted sets, Hashes)

Strings (일반적인 key-value)


– String이라고 해서 문자열만 저장할 수 있는게 아니라, 이진 데이터도 저장 가능 (정수, 실수형이 따로 없다.)


– key에 넣을 수 있는 데이터의 최대 크기는 512MB 이다.

Lists (Array 형태로 key 1개에 n개의 값을 가짐, 중복 값 가능)


– 배열이라고 생각해도 된다.

– 한 key에 넣을 수 있는 요소의 최대 개수는 4,294,967,295 개이다.

– 데이터 형의 값은 설정파일에서 정해준 조건보다 큰 경우 linkedlist 아니면 ziplist로 encoding 된다.


Sets (Group 형태로 key 1개에 n개의 중복되지 않는 값을 가짐)

– 정렬되지 않은 집합형으로 key에 중복된 데이터는 존재하지 않는다.

– 추가, 제거 및 존재 체크 시 소모되는 시간이, sets에 포함된 요소의 수와 관계없이 일정하다.

– 한 key에 넣을 수 있는 요소의 최대 개수는 4,294,967,295 개이다.

– 데이터 형의 값은 설정파일에 정해준 조건보다 큰 경우 hashtable 아니면 intset으로 encoding 된다.

Sorted sets (Group 형태이나 각 member에 score 값을 가짐, key-member-score)

– Sorted sets는 가장 진보한 Redis 데이터 형이라고 한다.


– 요소의 추가, 제거, 업데이트는 매우 빠른 방법으로 진행되는데 이는 “요소의 개수의 로그”에 비례하는 시간이 사용된다.

– 랭킹 시스템 등에서 사용되기 좋다.

– sets의 각 요소마다 score라는 실수 값을 가지고 있는 형태로 score 값으로 오름차순 정렬된다.

– key에 중복된 데이터는 존재하지 않지만 score 값은 중복 가능하다.

Hashes (Object 형태의 key-field-value)

– list와 비슷한데 “필드명”, “필드값”의 연속으로 이루어져 있다.

– 한 key에 포함할 수 있는 field-value 쌍의 최대 개수는 4,294, 967,295 개이다.

– 데이터 형의 값은 설정파일에서 정해준 조건보다 큰 경우는 hashtable 아니면 zipmap으로 encoding 된다.


redis 의 키 밸류 형태의 데이타베이스 이다.


밸류에 공백이 없다면 ” ” 로 묶지 않어도 된다.







'프로그래밍 > 서버 프로그래밍' 카테고리의 다른 글

WAN과 LAN. MAN  (0) 2016.02.21
쿠키(cookie)와 세션(Session)  (2) 2016.01.29
redis란?  (0) 2016.01.21
Posted by GENESIS8

댓글을 달아 주세요