한국어

네트워킹

온누리070 플레이스토어 다운로드
    acrobits softphone
     온누리 070 카카오 프러스 친구추가온누리 070 카카오 프러스 친구추가친추
     카카오톡 채팅 상담 카카오톡 채팅 상담카톡
    
     라인상담
     라인으로 공유

     페북공유

   ◎위챗 : speedseoul


  
     PAYPAL
     
     PRICE
     

pixel.gif

    before pay call 0088 from app


https://jeong-pro.tistory.com/139



Redis란?

: Remote Dictionary System의 약자로 쉽게 말하면 "인메모리 원격 캐시 서버" 정도로 생각하면 된다.

흔히 사용하면 데이터베이스와 크게 다르지 않아 NoSQL DBMS로 분류할 수도 있고 인 메모리라는 특성에 때문에 In memory 솔루션으로 분류할 수도 있다.

저 같은 초급 개발자 수준에서 설명하면 DB랑 다를게 없다. Oracle이나 MySQL처럼 redis-server process를 ip, port에 띄워놓고 접근해서 <key, value> 저장하고 가져다 쓰고하는게 전부다.

더 이상 설명할게 없다. 마치 mybatis가 따로 책으로 나오지 않는 것처럼 redis 공식 홈페이지뿐만 아니라 일반 블로그같은 사이트만 봐도 충분히 이해하고 사용가능하기 때문에 redis책도 따로 없다. (물론 최적화, 고도화를 위한 책은 있다)

메모리를 이용하여 고속으로 <key, value> 스타일의 데이터를 저장하고 불러올 수 있는 원격 시스템 "

으로 이해하고 넘어가면 된다.

<Key, Value>

<key, value> 쌍으로 데이터를 저장하고 쓰는 것은 파이썬의 Dictionary 또는 자바나 자바스크립트등에서 쓰이는 Map등에서 많이 해봤을 것이다.

마찬가지로 해당 값(value)를 불러오기 위한 key와 value를 쌍으로 저장하고 key를 이용해서 다시 값을 불러오는 구조다.


- Type

key타입은 String이고 value는 숫자나 문자등 바이너리로 저장가능한 모든 것인데 데이터를 가져올 때 쌍따옴표로 감싸지는 것으로 보아 String타입을 리턴하는 것같다. (*정확하지 않은 정보)

- Key 권장사항

Redis가 결국 데이터 조회라는 측면에서 Key는 간결하면서도 중복되지 않아야하는 특성을 가진다.

따라서 너무 긴 문자열은 지양해야하고 어쩔 수 없다면 해시(SHA1)를 이용해서 저장하기를 권고하고 있다.

그렇다고 너무 짧게 작성하려고 "user:1000:flower"를 "u1000flw"로 바꾸지 말라는 것이다.

아주 작은 차이라서 성능에 영향을 아주 미미하게 미치는 반면 가독성을 크게 해치기 때문에 적절히 사용할 것을 권장한다.

Value format

value의 형태는 string, sets, sorted-sets, hashes, lists가 있다.

주로 사용하는 형태는 String, list가 될 것 같다.

<그림 출처 : http://bcho.tistory.com/654  (조대협의 블로그)>

간단하게 설명하면,

string : 일반적으로 사용하는 단일 값

lists : 값들이 여러 개로 들어가는 형태, 배열 앞뒤(왼쪽,오른쪽)으로 넣고 뺄 수 있음

sets : 값들이 여러 개로 들어가는 형태는 똑같으나 값들이 중복될 수 없음, lists는 중복 가능

sorted sets : 값들은 sets와 똑같이 들어가고 추가로 score(숫자)를 저장함. score를 기준으로 정렬해서 보여주는 기능이 있음.

hashs : 여러 field와 value를 가진 구조로 40억개의 <field, value>쌍을 넣을 수 있음. "key-field-value"

- Value 권장 사항

value의 경우 lists, sets, hashs와 같이 여러개를 저장할 수 있는 형식이 있다. 앞서 말한 것처럼 hashs는 하나의 key에 40억개정도의 값을 저장할 수 있는데 이렇게 많이 저장하는 것은 하면 안된다. (성능상의 이유)


- Expire 설정

redis에서 사용하는 <key,value>쌍에 만료시간(Expire seconds)을 지정할 수 있다.

계속해서 데이터를 입력해서는 제한된 메모리가 감당할 수 없기 때문에 반드시 사용해야한다.

프로그래밍 언어별로 지원하는 라이브러리에서 간단한 코드로 사용이 가능할 것이다.

expire를 설정하지 않았더라도 메모리가 설정된 값보다 많이 사용하려고 하면 만료 시간이 되지 않았어도 제거한다.

 

***** 참고로 Redis는 싱글쓰레드로 명령어를 처리하기 때문에 한 번에 하나의 명령어를 처리한다.

따라서 cpu, memory를 많이 사용하는 명령어와 구조를 지양해야한다.

+ redis도 계속 메모리에만 있다가 데이터가 사라지는 것이 아니라 디스크에 저장할 수 있는 기능이 있다. (RDB, AOF) 적절히 사용하지 않으면 성능에 문제가 많아지므로 나중에 알아본다. 애초에 실시간 캐시 서버로 이용할 것이라 사용할지는 아직 모르겠음)

Redis 설치하기

Redis는 window에서 (공식적으로) 설치할 수 없다. 그리고 가상머신에서는 성능의 한계가 있기 때문에 일반 리눅스 서버에서 설치하고 사용하기를 권장한다. (비공식으로 window에서 설치 가능)

- 리눅스에서 설치하는 방법 (CentOS, ubuntu등 상관없음)

1
2
3
4
5
6
7
8
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make
 
sudo make install
 
redis-server


wget http://download.redis.io/redis-stable.tar.gz 명령어로 redis(stable)를 다운받는다.

tar xvzf redis-stable.tar.gz 명령어로 압축을 푼다.

cd redis-stable 압축을 풀어 생성된 redis-stable디렉토리에 들어간다.

make 명령어로 소스코드를 컴파일한다.

컴파일이 완료되면 sudo make install로 redis를 설치한다.

redis-server 명령어로 redis 서버를 킨다.

[redis 실행 화면]

4.0.8 버전의 redis설치가 되어 실행됐고 Port : 6379에서 돌고있고 Process ID가 6107 인 것 까지 상세히 알려준다.

간단한 설정 변경 (port, bind ip, password)

redis가 설치된 redis-stable디렉토리 안에 "redis.conf" 파일이 있다.

여기서 설정을 변경할 수 있다. (참고로 주석을 포함해서 파일 내용이 꽤 기니 ctrl + F 로 잘 찾아서 변경한다.

Port

포트번호는 위 사진에서 보듯 port 부분을 변경하면 된다. 기본적으로 6379포트로 되어있다. 변경하고 재실행

- Bind

redis는 default로 localhost(127.0.0.1)에서만 접근할 수 있도록 되어있다.

단순하게 생각해도 내 서버에 아무나 접속해서 set, get을 한다는 것은 이해할 수 없다. 따라서 bind라는 부분에다가 해당 redis에 접근할 수 있는 ip를 적어주면 해당 ip만 redis-server를 이용할 수 있다.

bind 192.168.0.20 192.168.0.21 208.99.21.64 이런식으로 지정하면 3개의 ip에서만 접근이 가능하다.

또한 bind 0.0.0.0 라고 설정하거나 bind부분을 주석처리(#)해버리면 모든 ip에서 접근이 가능하게 된다.

보안상 아주 취약하게 되므로 test외에 실제 운영단계에서는 하면 안된다.

- Password(requirepass)

IP로만 접근에 제한을 두는 것 뿐만 아니라 비밀번호를 설정해서 redis 접속에 제한을 둘 수 있다.

default로 주석처리되어있어 비밀번호가 필요없다. 만약 비밀번호를 설정하고 싶으면 주석을 풀고 foobared대신 원하는 암호를 적어넣으면 된다.

그리고 프로그래밍에서는 해당 redis라이브러리에서 connect하는 부분에 비밀번호를 넣으면 되고, redis-cli를 이용하는 사람은 "auth foobared(비밀번호)"라는 명령어를 입력하고 redis 명령어를 사용하면 된다.


참고 사이트

http://bcho.tistory.com/654



출처: https://jeong-pro.tistory.com/139 [기본기를 쌓는 정아마추어 코딩블로그]

조회 수 :
15225
등록일 :
2020.01.10
16:22:29 (*.128.149.25)
엮인글 :
http://www.webs.co.kr/index.php?document_srl=3321076&act=trackback&key=df5
게시글 주소 :
http://www.webs.co.kr/index.php?document_srl=3321076
List of Articles
번호 제목 글쓴이 조회 수 추천 수sort 날짜
123 Name Server 설정및 이해 admin 31603   2011-12-13
 
122 서버이전시 고려할 사항들 admin 84053   2011-12-13
 
121 리눅스 tar 압축 백업복원시 소유자 문제해결 admin 37322   2011-12-16
 
120 ftp 파일전송 여러파일을 한번에 통째로 전송 admin 37900   2011-12-16
 
119 리눅스 서버 이전시 고려할 사항들 admin 130718   2011-12-16
 
118 How to disable IPv6 in Debian , 리눅스 아이피설정 admin 45199   2011-12-16
 
117 파이썬 설치 및 사용하기 admin 109016   2011-12-16
 
116 윈도우 2003 작업 스케줄러 설정 admin 47552   2011-12-16
 
115 무료백신 여러가지 분류해놓은곳 admin 30652   2011-12-16
 
114 스트리밍서버 / 윈도우서버 admin 37804   2011-12-16
 
113 Wireshark admin 30372   2011-12-16
 
112 모든 CPU 벤치마크 수치 admin 41086   2011-12-16
 
111 다양한 사운드 파일있는곳 admin 30246   2011-12-19
 
110 리눅스 네트워크 설정 LINUX admin 41859   2011-12-19
 
109 Centos net install web http admin 82165   2012-03-02
 
108 How to disable IPv6 in Debian Lenny and Squeeze admin 45419   2011-12-29
 
107 linux 파티션 디렉토리 용량 확인방법 전체 폴더 크기 사이즈 admin 40875   2012-01-05
 
106 특정 IP 엑세스 못하게 하는방법 admin 27061   2014-10-29
 
105 검색 파일리스트 만든 다음 여러파일 한방에 압축하기 admin 33286   2012-02-14
 
104 Linux 시스템 백업과 복원 admin 77757   2012-02-28
 
103 Site builder shootout: Drupal vs. Joomla vs. WordPress admin 146470   2012-07-15
 
102 리눅스의 막강한 네트워크 필터 iptables admin 31761   2012-04-15
 
101 [Linux/SSL] 리눅스 서버에 Apache 2 설치 및 SSL 설정하기(mod_ssl, openssl) admin 42624   2012-04-15
 
100 scp, ssh, rsync등을 사용할때에 SSH 비밀번호 묻는것 피하기 admin 41325   2012-04-15
 
99 한국인/국내기업은 얼마나 Linux Kernel에 기여할까? admin 77394   2012-04-29
 
98 Debian CD DVD 다운로드 링크 헤메지말고 바로 다운로드하지요 admin 39213   2012-08-18
 
97 리눅스에 RADIUS 서버 구현하기 admin 226277   2012-09-01
 
96 WinXP 부팅안되는 현상 NTLDR is missing 메세지 admin 36579   2012-07-12
 
95 윈도우XP 알면 정말 편한 숨겨진 기능 60가지 admin 86529   2012-05-11
 
94 암호 없이 SSH 접속하기 admin 38144   2013-09-05