PHP에서는 여러 데이터베이스를 사용할 수 있다.

그 중에서, MySQL 을 연동하기 위해 mysqli_connect() 함수를 사용한다.

DB관련 정보 파일을 따로 만드는 것이 좋다.

각 파일마다 동일한 접속을 하는것은 코드 자원의 낭비이자, 훗날 유지보수를 위해 피해야한다.

설정파일이므로 dbconfig.php로 이름을 지정하자.(이름은 물론 마음대로)


dbconfig.php


<?php


$DBhost = "localhost";

$DBuser = "root";

$DBpassword = "XXXXX";

$DBname = "testDB";


$conn = mysqli_connect($DBhost, $DBuser, $DBpassword, $DBname);


if ($conn->connect_error) {

die("Connection failed: " . $conn->connect_error);

}

?>



이렇게하면, php와 mySQL이 연동된다.


mysqli_connect의 매개변수


1 : 아이피 주소

2 : MySQL 아이디

3 : MySQL 비밀번호

4 : MySQL DB 이름

5 : MySQL PORT(생략 가능. 기본적으로 3306이기 때문에)


이렇게 파일을 작성했으면, 여러 PHP파일에서 불러다가 사용할 수 있다.

불러오는 방법은 


require_once() 또는 include_once()를 사용하면 된다. 이 외에도 require()나 include()가 존재한다.

_once가 붙었으므로 한 번 호출된다는 것은 알 것이다.

php 시작 전에 


require_once("../dbconfig.php");


을 입력하게 되면(물론 괄호 안에는 본인의 상황에 맞는 경로로 지정해야 함)

다른 php파일에서 위 파일을 사용할 수 있게 된다.

Posted by sungho88
,

Node.js에서는 직접 별도의 모듈을 정의하여 사용하지 않더라도 

기본적으로 수많은 내장된 모듈을 지원한다. 하지만, 너무 많기떄문에 다 외워서 사용할 수는 없다.

6개월마다 노드 버전이 바뀌고 있기때문에 기능이 빠르게 추가되고 삭제되기 때문이다.

그러므로 기본적인 사용법만을 익히고 구체적인것은 노드js


os모듈 : 그냥 현재 실행중인 컴퓨터의 운영체제에 대한 다양한 정보를 읽어올 수 있는 기능이다.

그다지 중요하진 않다. 그냥 시스템 속성보면 다 나옴..ㅋ

하여튼 중요한 것은 노드js에서 모듈을 사용하기 위해서는 require()함수를 사용한다.


var os = require('os');


그 다음에 변수 os를 사용하여 여러가지 메소드들을 호출하면 os모듈로부터 정보를 얻을 수 있다.


url 모듈 : 이 모듈을 사용하고 싶은 때 불러오는 선언은 마찮가지다. var url = require('url');

이 모듈에서 가장 대표적인 함수는 parse()함수이다.

이 함수는 일반적인 문자열  그중 URL 주소 문자열을 URL 객체로 변환하여 리턴한다.


Posted by sungho88
,

전역 변수 & 전역 객체

- 프로그램 전체에서 사용할 수 있는 변수 또는 객체를 의미함.


전역 변수

1. __filename : 현재 실행 중인 파일의 이름을 보여주는 변수

2. __dirname : 현재 실행 중인 파일의 경로를 보여주는 변수


전역 객체

1. console : 콘솔 화면과 관련된 기능을 다루는 객체

2. exports : 모듈과 관련된 기능을 다루는 객체

3. process : 프로그램과 관련된 기능을 다루는 객체



1) console 객체

1. log() : 콘솔 화면에 출력

2. time() : 시간 측정을 시작

3. timeout() : 시간 측정을 종료


log()에서 사용할 수 있는 특수 문자 : %d(숫자) %s(문자) %j(JSON)


console.log(%d + %d = %d, 4, 5, 6); 과 같이 사용


특수 문자 개수 > 매개변수의 개수라면, Ex) console.log(%d + %d + %d = %d, 4, 5, 6);

결과적으로 남는 %d는 그냥 문자로 출력 (결과 : 4 + 5 + 6 = %d)


특수 문자 개수 < 매개변수의 개수라면, Ex) console.log(%d = %d, 4, 5, 6);

결과적으로 남는 매개변수는 그냥 출력(4 = 5 6)


time() 함수와  timeout()함수는 프로그램 실행 시간을 출력할 때 사용 매개변수로 타이머를 식별.

Ex) time('programTime')  .... timeout('programTime');

이렇게 하면 time()메소드를 호출 후 timeout() 메소드가 호출되기 전까지 ...과정의 시간을 계산.


2) process객체

- 프로그램과 관련된 정보를 나타냄(컴퓨터 환경, 노드의 설치 버전, OS, 플랫폼, 등등)

- 자바스크립트엔 존재하지 않는 Node.js만의 객체


3) exports객체

- 먼저 모듈이란 기능을 쉽게 사용하고자 메소드와 속성을 미리 정의하여 모아놓은 것이다.

- Node.js는 결국 모듈들을 활용해 기능을 확장하여 프로젝트를 만들어 나아가는 것이라 할 수 있다.

- 모듈은 보통 코딩 외부에서 별도의 js파일을 생성하여 사용한다.

- 이 모듈을 생성할 때 exports 객체를 사용한다.  exports 객체에 속성이나 메소드를 지정한다.

- 이 모듈을 사용할때는 require() 함수를 사용한다.


Posted by sungho88
,

Node Package Manager


일단 모듈이라는 개념이 있다.

모듈은 쉽게 말하면 어떤 작업을 하기 위해 필요한 부분? 부품? 이라고 할 수 있다.

노드js에서는 이 모듈을 사용하기 위해 require라는 것을 사용한다.

예를들어 노드js의 가장 대표적인 예제로 나와있는 서버를 생성하는 코드를 보게 되면,


const http = require('http');


const hostname = '127.0.0.1';

const port = 3000;


const server = http.createServer((req, res) => {

  res.statusCode = 200;

  res.setHeader('Content-Type', 'text/plain');

  res.end('Hello World\n');

});


server.listen(port, hostname, () => {

  console.log(`Server running at http://${hostname}:${port}/`);

});


이렇게 되어있다. 이 코드에서  맨 윗 줄...


const http = require('http');


이 부분이 모듈을 사용하겠다고 호출하는 부분이다.
즉, http 라는 이름의 모듈을 상수 http에 집어넣고, 이 상수를 통해 모듈을 사용하겠다는 의미이다.
이렇게 별도의 설치없이 require만으로 호출하는 것은 노드js 안에 내장되어 있는 모듈만 가능하다.

http os Date String Array Math 등등 이런것들은 JavaScript가 제공하는 모듈이다.

따라서, 노드js 뿐만 아니라 자바스크립트가 동작하는 모든 곳에서 사용할 수 있다.

하여튼, 하지만, 내장된 모듈만으로는 수많은 기능을 모두 표현할 수 없을 것이다.


기본적인(내장된) 모듈을 기반으로 해서 타인의 모듈을 사용하여 편리하고 발전된 기능이 가능하다.

그래서 나온것이 NPM이다.


NPM은 노드js에서 앱 스토어와 같다.

또한 매우 간단한 설치/삭제/업그레이드/의존성 관리가 가능하다.

NPM은 노드뿐만 아니라 노드js를 기반으로 한 수많은 언어에서 NPM을 그대로 사용할 수 있다.


npm Main Page


NPM를 독립적으로 설치하는 방법


 $ npm install -g uglify
// -g : global을 의미. 설치된 컴퓨터 전역에서 사용할 수 있는 독릭적 설치
// -g 생략 : 패키지 안에서



이렇게 되면 설치완료.

-g를 붙여서 설치했으므로 어떤 디렉토리에서든 uglify를 실행할 수 있다.

못 생기게 한다??


uglifyjs --help를 입력해서 사용법을 알아보도록 하자.


테스트를 하기위해 js파일을 하나 만든다. (Fun.js)



function hello(name){

  console.log('Hi, '+name)

}

hello("Sungho");



파일에 아무렇게나(난 위처럼 작성...) 작성 한 뒤, cmd명령어로 돌아와서 


uglifyjs Fun.js 을 입력해보자.

그럼 코드가 괴상망측하게 바뀐것을 볼 수 있다.


uglify... 말그대로 코드를 못 생기게 만들었다. 도대체 왜 그런걸까.


파일에는 줄바꿈, 띄어쓰기, 들여쓰기등이 완벽하여 가독성이 뛰어나다.

하지만, 가독성을 높이기 위해 사용된 이러한 것들이 데이터의 일종이기 때문에 

네트워크를 사용해서 자바스크립트 파일을 전송한다고 하면, 이러한 쓸데없는 것들이 데이터 양을 증가시켜 비용이 많이 발생하고 시간 역시 지연을 시킨다.


따라서 uglify는 이러한 불필요한 데이터들을 싹 없애주는 기능을 하는 NPM이다.

데이터를 더욱더 줄이고 싶다면


uglifyjs Fun.js -m


-m : mangle 수축? 지역변수와 같은 것들이 한 글자로 출력되어 더욱 데이터가 절약될 수 있다.

name이라는 변수가 o가 되어 출력되었다.


Posted by sungho88
,

1. String 

 

- String은 일반적인 Text문자열이며, key와 value가 각각 하나씩인 일대일 관계(유일)

- Text형태만 저장할 수 있는것이 아니라, binary safe string이다.

- 이것이 의미하는 것은 JPEG 이미지나 숫자 알파벳 등을 사용할 수도 있다는 것이다.

- key와 value 모두 넣을 수 있는 최대 길이는 512MB이다.

- key는 너무 길면 찾기 어렵고, 불필요한 메모리 소모가 일어난다.

- key는 너무 짧으면 뭔지 해독하기 쉽지 않으므로 알맞게 하도록 하자.

- key를 구성할때 단어 사이에 구분자를 사용하는 것이 좋습니다. 
  예를 들어 ':', '-' 등을 사용해서 key를 구성하면 쉽게 알아볼 수 있습니다.

 

String 명령어는 수없이 많으므로 몇 개만 보고 나머지는 아래 사이트에서 시간날때 해라..

 

 데이터형 String의 명령어 리스트 모음

 

 

SET KEY VALUE   :  key-value 형식으로 데이터를 저장.

GET KEY :  저장된 KEY를 불러옴.

 

SET hi Hello : hi라는 키에 Hello라는 값이 저장.

GET hi : Hello

 

value값이 한 단어가 아니라면, 쌍따옴표를 사용한다. 

 

SET hello "HELLO WORLD!" --> hello란 키에 HELLO WORLD! 문자열 저장

GET hello --> HELLO WORLD!

DEL hello --> key값 삭제. 제거됨. (nil)뜸.

 

SET hello hoho 

SET hello haha

쓴데 또 쓰면 당연히 나중에 쓴 값(value)이 저장됨.

그 외에도 EX 나 NX 등 많음. 이런 명령어는 시간 많을때 보도록..

 

2. Lists

 

- 일반적인 배열로 생각하면 된다.

- List는 key 1개에 n개의 value를 갖는다. (단, 중복된 값 저장 가능함)

- 입력된 데이터값은 입력된 순서대로 순차적으로 저장 및 처리된다.

- 주로 큐(Queue)와 스택(Stack)으로 사용된다.

큐 : 들어오는 데이터들 순서대로 처리할 때 사용한다.

스택 : 웹브라우저의 Back 버튼과 같이 주로 되돌아갈때 사용한다.

 

- 한 key에 담을 수 있는 최대 갯수는 4,294,967,295개(2^32 - 1개)

- 대표적인 명령어 : LPUSH RPOP

 

명령어 LPUSH : 

리스트에서 데이터를 저장하는데 사용한다.

처음 저장한 데이터가 리스트의 맨 오른쪽에, 가장 마지막에 저장한 데이터가 리스트의 맨 왼쪽에 위치한다.

 

lpush KEY VALUE (한 개의 VALUE 저장)    또는

lpush KEY VALUE VALUE VALUE   (한 줄에 여러개 데이터 저장 가능) 

 

 

명령어 RPOP : 

리스트의 오른쪽에서 데이터를 하나씩 꺼낸다. 즉, 먼저 저장된 값을 꺼내온다.

 

데이터형 Lists의 명령어 리스트 모음

 

 

3. Sets

 

 - Group 형태로 key 1개에 n개의 값을 갖는다. (단, 중복된 값 허용하지 않음)

 - 입력된 순서와 상관없이 저장되는 정렬되지 않은 집합형이다.

 - '집합'이기 때문에 한 key에 중복된 데이터는 존재할 수 없다.

 - 즉, 동일한 key에 같은 값 value A가 두 번 추가된다면 값은 하나만 존재하게 된다.

 - 한 key에 담을 수 있는 최대 갯수는 4,294,967,295개(2^32 - 1개)

 - Set의 경우 집합 연산을 제공한다. 합집합, 교집합, 차집합을 할 수 있다.

-  Sets에서는 집합이라는 의미에서 value를 member라 부른다.

   명령어 SADD : 데이터를 저장하기 위한 명령어.

 

데이터형 Sets의 명령어 리스트 모음

 

 

4. Sorted Sets

 

- key 하나에 여러개의 score와 value로 구성된다.

- Sets과 마찮가지로 중복된 데이터는 허용하지 않는다.

  동일한 키에 값을 여러번 추가해도 하나만 존재하게 된다.

- Set에 'score'라는 필드가 추가된 데이터형이다.

- score로 데이터 값(value)의 순서를 정렬(sort)한다.

- score가 같다면 데이터 값(value)으로 정렬(sort)한다.

- 정렬된 데이터가 필요한 경우 Sorted Set 데이터형을 사용한다.

 

5. Hashes

 

- Hashes의 경우 key 하나에 여러개의 field와 value 쌍으로 구성된다.

- 하다.

 
 
Hashes VS Table 공통점
1. Hashes가 필드(field)와 값(value)로 구성된다는 점은 RDB의 table과 비슷하다.
2. Hash key는 table의 PK, field는 column, value는 value로 생각하면 비슷하다.
3. Key가 PK와 같은 역할을 하기떄문에 Key 하나는 table의 하나의 row와 같다.
 
Hashes VS Table차이점
1. Table의 column 수는 일반적으로 제한이 있다.
   하지만, Hashes의 field의 수는 40억개로 거의 무제한에 가깝다.
 

2. Table에서 column을 추가하려면 alter문으로 미리 table을 변경해야 하지만, 

   Hash에서는 그러한 사전 작업이 필요없다. 따라서, field의 추가/삭제가 자유롭다.

   field의 추가/삭제는 해당 key에서만 영향을 미친다.

 

 

https://www.10000duck.com/ducks/44

 

10000duck - 아프가니스탄 위기상황 대응 긴급구호

온라인 모금함을 통해 기부하세요.

www.10000duck.com

 

 

 

 

 

 

 

 

 

 

 

 

 

http://www.redisgate.com/redis/command/common.php

http://kerocat.tistory.com/1

http://bcho.tistory.com/654 

Posted by sungho88
,

Redis Desktop Manager(RDM)이 무엇이냐 하면


터미널에서 값을 아무리 넣고 빼고 해도 제대로 들어갔는지도 보이지 않고 어떻게 들어가는지 보고싶을때가 있다.

그런 사람들을 위해 RDM이 존재한다.

즉, Redis에서 key-value 데이터값을 UI적으로 볼 수 있는 프로그램이다.

MySQL의 워크벤치와 동일한 목적을 갖는 프로그램이라고 생각하면 된다.



일단 결론을 말하면 


1. 우분투 버전(ISO이미지)

최근 우분투 버전인 ubuntu-16.04에서는 설치를 할 수 없다!!!

이전 우분투 버전인 ubuntu-14.04.4에서는 설치를 해야한다.

이유는 최신버전이어서 호환성? 이 부족한 것인듯하다.


2. Redis Desktop Manager를 다운받는다.(당연히 우분투 환경에서)

다운로드


3. 우분투에서 터미널을 열어라.


4. 다운로드 받은 파일을 압축해제하는 명령어를 입력한다.


dpkg -i redis-desktop-manager_X.X.X_i386.deb


X.X.X는 당연히 받은 파일 버전이다.

틀리기 쉬우므로 -i이후에 문자는 다운받은 파일명을 통째로 갖다붙이면 편하다.

여기서 계속 의존성문제가 발생했다. 구글에서 찾은 결과.

의존성 문제 해결

과 같이 $sudo apt-get -f install를 입력해라.

 

이래도 안될 경우, 우분투가 너무 최신버전이어서 그렇다.

그래서 맨 위에 미리 말한것이다.

리눅스 14버전을 설치해서 $sudo apt-get -f install 까지 작성한뒤, 아래 명령어를 입력하면 창이 열린다.

5. 이제 설치된 rdm 파일을 열어보자.


/usr/share/redis-desktop-manager/bin/rdm


입력하면, 드디어 뭔가 쭉쭉 올라가면서 나온다. 나온다.


이게 뜨면 성공~


이제 Redis Desktop Manager를 사용하도록 하자.

Posted by sungho88
,

리눅스가 낯설다보니.

낯선. 용어


의존성 문제가 발생했습니다. 설정하지 않고 내버려둡니다.


뭔 말인가?


해결방법


http://forum.falinux.com/zbxe/index.php?document_srl=832687&mid=lecture_tip


 $sudo apt-get -f install입력해주면 해결~


..............................될 것이라 생각했지만 안된다.


Redis Desktop Manager를 Ubuntu에 깔려고 하다가 발생한 문제이다.

Redis Desktop Manager란 MySQL의 Workbanch아고하나?


그 GUI를 통해 Redis 구조를 보여주는 프로그램이다.

도대체 의존성 문제가 무엇인가?



바로바로바로바로





Posted by sungho88
,

가상 OS를 생성하고 우분투에 정상적으로 접속을 했다면..

우분투 환경에서 마우스 오른쪽 클릭 - 터미널 열기를 해서 터미널을 연다.


그 다음에 redis파일을 다운받아야하는데 브라우저를 열고 

ZIP 파일을 직접 다운받을수도 있지만, URL주소를 통해 웹으로 다운을 받을수도 있다. 

다음과 같이 URL을 적어주면 된다.


아 그전에...


리눅스가 처음이라면 Ubuntu에 설치된 패키지들을 업데이트해줄 필요가 있다.


$sudo apt-get update 


Redis 설치


$ wget http://download.redis.io/releases/redis-3.2.0.tar.gz --> 파일 다운로드에 접속해서 파일 다운받기

$ tar xzf redis-3.2.0.tar.gz    --> 방금 받은 파일 압축 풀기

$ cd redis-3.2.0 --> 압축 푼 폴더로 이동

$ make

$ make test  

$ make install 

이것이 기본적인 Redis를 설치하는 방법이다. 

위 과정이 끝났다면 우분투에 Redis가 설치되었다.


...여기서 끝인줄 알았다.


src/redis-server도 잘 동작한다.

하지만, redis-cli는 거부된다.refuse 정상적으로 실행되지 않는다.

한 가지 빼먹은 사실이 존재했다.


위 명령어를 마치면 우분투에 redis가 설치된 상태이다.

서버를 실행하기 전에 세팅을 해줘야한다.




$ utils/install_server.sh

$ sudo apt-get install redis-tools
$ sudo apt-get install redis-server

Redis는 메모리 기반이기 때문에 


1. 최대 메모리를 얼마나 할 것인지, 

2. 포트번호는 어떻게 할 것인지

3. 로그 파일 이름은 어떻게 할 것인지,


등등 설정해 줄 것들이 있다. 자동으로 설정해주면서, 물어보는 방식이다.

그냥 Enter만 열심히 때려라.

이렇게 해야 설정한 환경으로 서버가 100% 정상적으로 동작하게 된다.

안그러면 포트가 지정이 안되어있으므로 안됨.

이제 하면된다.


Redis 서버 실행


$ src/redis-server --> 기본적인 Port로 서버가 연결된다.


Redis 클라이언트 실행

$ src/redis-cli --> 기본적인 Port로 연결되며 어떤 작업을 할 수 있는 화면으로 이동


위까지 진행헀을 때, 정상적인 동작


127.0.0.1:6379>

와 같이 표시된다면 정상적으로 설치가 완료가 되었고 작동하고 있다이다.


127.0.0.1는 당신의 IP 주소이며, 6379는 지금 동작중인 redis server의 포트번호이다.
이제 ping pong 테스트를 해보자.


127.0.0.1:6379>ping
PONG

재밌다. 이렇게 뽕이 나오면 100% 완벽하게 설치가 완료되었다.

이제 간단히 값을 한번 넣어보겠다.


127.0.0.1:6379> SET key "Hello Redis"

OK

127.0.0.1:6379> GET key

"Hello Redis"


String 하나를 넣고, 가져와봤다. 


이상으로 우분투에서 레디스를 설치하는 방법에 대해 알아봤다.


Posted by sungho88
,


[레디스 개념 및 특징]


Redis도 약자이다(REmote DIctionary Server)

Salvatore Sanfilippo라는 이탈리아 해커가 MySQL로 어떤 어플을 개발하다가 느려터졌다고 생각했고, 

직접 빠른 서버를 만들어봐야겠다고 생각했고, 

그 결과 Redis를 개발하게 되었다는 비하인드 스토리...


이 인간


[레디스 특징


1. 오픈 소스 소프트웨어고,

2. 디스크가 아닌 메모리 기반의 데이터 저장소이다. (In-Memory data structure store) 

3. NoSQL & Cache 솔루션이며 메모리 기반으로 구성된다.

4. 명시적으로 삭제, expire를 설정하지 않으면 데이터는 삭제되지 않는다(영구적 보존)

5. 여러대의 서버 구성 가능하다.

6. 데이터베이스로 사용될 수 있으며, Cache로도 사용될 수 있는 기술이다.

7. 성능은 서버에 따라 다르나 초당 2만 ~ 10만회 수행한다. 


Memory 위에서 동작하는 Key/value 저장소(Store)인 레디스는 NoSQL DBMS로 분류되며 동시에 Memcached와 같은 인메모리(In-memory) 솔루션으로 분리된다. 

성능은 Memcached이 갖고 있는 좋은점을 기반으로 만들어졌기 때문에 Memcached보다 우수하긴하지만 더욱 복잡하며, 다양한 데이터 구조체를 지원하기 때문에 Message Queue, Shared memory, Remote Dictionary 용도로 사용될 수도 있다. 

대부분의 언어를 사용할 수 있지만, Linux를 이용하기를 권장하고 있다.

그리고, 안전한 데이터의 보관과 백업을 위해 두 가지 방법을 제공한다.


1. 다른 서버의 메모리에 실시간으로 복사본을 남길 수 있다. 

2. 디스크에 직접 저장하는 방법도 존재한다.


NoSQL 중에서도 Redis가 주목을 받는 이유는 다음과 같다.

- 데이터 저장소로 입력/출력이 가장 빠른 메모리를 채택.

- 단순한 구조의 데이터 모델인 Key-Value 방식을 통해 빠른 속도.

- 캐시 및 데이터 스토어에 유리.

- 다양한 API 지원.


Redis는 페이스북, 인스타그램, 네이버 LINE 서비스, StackOverflow, 블리자드 등 대형 서비스 없체들이 사용자들의 대규모 메세지를 실시간으로 처리하기 위하여 사용하고 있다.


※인메모리 캐시(In-memory Cache)란?


메모리 캐시 기반의 제품이 많은 시스템에서 사용되는 이유는 단연 성능!!!

캐시 방식을 통해 DB Read의 부하를 감소할 수 있기 때문이다.

서비스 요청이 증가하여 DB요청이 많아지면 DB서버 부하가 증가하게 되는데 메모리 

캐시가 적용되면 성능 및 처리속도가 향상된다.


[레디스 장점]


1. 리스트, 배열과 같은 데이터를 처리하는데 유용하다.

 - value 값으로 문자열, 리스트, Set, Sorted set, Hash 등 여러 데이터 형식을 지원.

 - 따라서 다양한 방식으로 데이터를 활용할 수 있다. 

 - 리스트형 데이터 입력과 삭제가 MySQL에 비해서 10배정도 빠르다고 한다.

 - 

2. 여러 프로세스에서 동시에 같은 key에 대한 갱신을 요청할 경우,

   Atomic 처리로 데이터 부정합 방지 Atomic처리 함수를 제공(뭔 소린지 모르겠다...)


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

 - 명령어로 명시적으로 삭제, expires를 설정하지 않으면 데이터가 삭제되지 않는다.

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


4. Redis Server는 1개의 싱글 쓰레드로 수행되며, 따라서 서버 하나에 여러개의 서버를  

   띄우는 것이 가능하다.

 - Master - Slave 형식으로 구성이 가능함

 - 데이터 분실 위험을 없애주는 것이 바로 위 Master - Slave 방식이다.



위 기능을 이용하면 실시간으로 데이터를 다른 서버에 복제한다. 

즉, Master server가 down되어도, slave server로 접속하면 바로 서비스를 계속할 수 있다.

그리고 레디스의 성능을 거의 떨어뜨리지 않고 디스크 쓰기 기능을 제공한다. 

레디스 시작 시 이 데이터를 읽어 들어므로 데이터 분실 위험은 거의 없다고 봐도 된다.


5. Redis에는 5가지의 데이터형을 사용할 수 있다.

 - String

 - Lists

 - Sets

 - Sorted sets

 - Hashs



다음 블로그에서...



[참고 사이트]


http://ojava.tistory.com/70

http://bcho.tistory.com/654

http://mydb.tistory.com/210

http://redis.io/documentation

http://crystalcube.co.kr/176 


Posted by sungho88
,

OS(Operating System)운 운영체제. → Windows, Linux, Unix, IOS 등등이 이에 속한다.

한 컴퓨터에 여러개 설치를 할 수는 있지만, 실행은 하나만 가능하다.

하지만, 가상 OS를 사용하면 하나의 OS에서 여러개의 OS를 실행하는 것이 가능하다.


대표적인 가상 OS 프로그램이 바로 VirtualBox이다.

설치해보자.



VirtualBox 다운로드 공식 사이트


자신의 컴퓨터에 맞는 OS를 찾아서 다운로드 한뒤, 실행한다.




다음 과정도... 눈치껏 Next 무한 반복하면 설치가 완료된다.


위와 같이 뭘 설치하라고 나오면 무조건 설치 GoGo.

설치가 끝나면 바탕화면에 아이콘이 생겼다. 실행시킨다.



그럼 아래와 같은 첫 화면이 뜬다.




새로 만들기 머튼 클릭!




이름은 자기 마음대로.

종류는 자기가 원하는 OS를.. 버전도 자기가 원하는거. 하고 싶은거 해~


나는 Linux 그 중에서 Ubuntu를 설치!!



메모리를 지정하라고 한다.

테스트이고, 뭐 그다지 많이 필요없으므로 기본값인 768MB로 한다...왜 이렇게 크지.?



처음이므로 가상 하드디스크가 존재하지 않는다.

그러므로 그냥 냅두고 만들기 버튼 클릭하여 넘어가면 된다.


이게 뭔가.

모른다. 그냥 VDI로 선택하고 넘어간다.

또 물어본다.

동적 할당 고정 크기...

그냥 동적 할당으로 넘기고 다음 클릭


또 묻는다.

하드디스크 용량 설정... 왠만큼 기본으로 잡아주기 때문에 그냥 넘겨.. 드디어 만들기 버튼이!


드디어 

드디어



 설치완료





















Posted by sungho88
,