레디스(Redis)는 Remote Dictionary Server

Cloud Lexicon (사전)

레디스(Redis)는 Remote Dictionary Server

레디스(Redis)는 Remote DictionaryServer의 약자로서

 "키-값" 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터베이스 관리 시스템(DBMS)이다. 2009년 살바토르 산필리포(Salvatore Sanfilippo)가 처음 개발했다. 2015년부터 Redis Labs가 지원하고 있다. 모든 데이터를 메모리로 불러와서처리하는 메모리 기반 DBMS이다. BSD 라이선스를 따른다. DB-Engines.com의 월간 랭킹에 따르면, 레디스는 가장인기 있는 키-값 저장소이다.

 

지원하는 언어

많은 언어들이 레디스를 바인딩하고 포함하고 있다

ActionScript, C, C++, C#, Clojure, 커먼리스프, Dart, Erlang, Go, 하스켈, Haxe, Io, 자바, Node.js, Lua, 오브젝티브-C, 펄, PHP, Pure Data, 파이썬, R, Ruby, Scala,Smalltalk 및 Tcl.

 

데이터 모델

외부층에서 레디스의 데이터 모델은 키를 값에 맵핑하는 자료구조의 디렉토리이다.레디스 그리고 기타 구조화된 스토리지 시스템 사이의 주요 차이점 중 하나는 레디스는 스트링뿐만 아니라 자료구조의 추상적 자료형(Abstract Data Type)도 지원을 한다는 점이다.

 

문자열의 리스트

문자열의 집합 (반복되지 않고 정렬되지 않은 요소의 집합)

문자열의 정렬된 집합 (스코어라고 불리는 부동소수점의 지시를 받는반복되지 않는 요소의 집합)

키와 밸류가 스트링인 해시

값의 종류는 어떤 조작들이 값 그 자체로서 사용가능한지 결정을 한다.

 

스칼라(영어: Scala)는객체 지향 프로그래밍 언어와 함수형 프로그래밍의 요소가 결합된 다중패러다임 프로그래밍 언어

스칼라라는 이름은 "Scalable Language (확장가능한 언어)"에서 유래되었다.

 

Java와 다르게, 스칼라는커링, 불변성, 느긋한 계산법, 패턴 매칭 등 여러 함수형 프로그래밍 언어의 기능을 가지고 있다. 스칼라의자료형 체계는 대수적 자료형, 공변성, 고차 자료형, 익명 자료형을 지원해 Java에서는 이룰 수 없는 높은 수준의 추상화를달성할 수 있다.

 

스칼라는 2004년 마틴 오더스키가 처음 개발하여 배포했다. 간결한 소스 코드를 사용하여 Java에서 구현할 수 있는 대부분의기능을 구현할 수 있다. Scala는 자바 바이트코드를 사용하기 때문에 자바 가상 머신(JVM)에서 실행할 수 있고, Java 언어와 호환되어 대부분의 자바 API를 그대로 사용할 수 있다.

 

자바와의 연관성

공통점

대부분의 스칼라 관련 문서들에서 스칼라와 자바의 연관성을 '너무 바빠서다른 언어를 따로 배울 시간이 없는 자바 프로그래머를 위한'이라는 표현을 사용하여 나타낼 정도로 비슷한부분이 많이 나타난다.

 

패키지

import 키워드를 통해 사용할 패키지의 선언을 한다. 이 때 _(밑줄,underscore)을 사용함을 통해 패키지나 객체의 멤버에 대해 접근성을 향상시킬 수 있다.

 

자바 API의 사용

스칼라에서는 자바 API도 사용할 수 있다. 다음은 java.util.Scanner를 통해 문자열 입력을 받아출력하는 예제이다.

 

실행 환경

스칼라 고유의 라이브러리 파일을 추가로 가지고 있으면 기존의 자바 가상 머신에서 그대로 실행할 수 있다. 다음은 리눅스에서 자바 실행기(CUI환경)를 통해 스칼라로 컴파일한 프로그램을 실행하는 예이다.(bin에 클래스파일들이, lib에 스칼라 라이브러리 파일들이 있다고 가정한다.)

 

 

자료형

자바에서의 자료형은 기본 자료형(int, short, long, float,double, byte, char, boolean)과 참조 자료형(기본 자료형의 조합으로생성한 클래스)으로 나뉜다. 이는 성능에는 도움이 될 지몰라도 기본 자료형과 참조 자료형 간의 변환 문제로 언어의 표현이 복잡해지는 경향이 있다. 이에 반해스칼라에서는 스몰토크나 루비와 같이 모든 자료형을 객체로 취급하고 있다. 그 예로 3 + 4 와 같은 수식은 정수 3의 메소드 +를 4라는 정수 인자값으로 호출한다고 표현하여 (3).+(4) 와 같이 표현할 수 있다. 스칼라의 모든 객체는 scala 패키지의 Any를 최상위 클래스로 값(AnyVal)과 레퍼런스(AnyRef)를 모두 아우르고 있다.

 

싱글턴 객체

자바에서는 생성자를 private를 통해 선언함과 메소드를 static으로 선언함을 통해 싱글턴 객체를 생성한다. 이렇게 생성된객체는 생성자가 private으로 선언되어있기 때문에 새로 객체를 생성할 수 없고 static 메소드를 통해 어디서나 접근하는 것이 가능하다. 하지만 static은 객체지향이 지향하는 바에 부합하지도 않을 뿐 더러 객체를 프로그램 실행 초기에 미리 생성해두어야하기 때문에 자원의 낭비 가능성이 존재하게 된다. 이를 스칼라에서는 object라는 키워드를 통해 선언한다. 내부동작에는 크게 차이가없으나 코드 표현에 있어서 간결성을 보인다.

 

다중 상속

자바와 다르게, 스칼라는 트레잇(Trait)을이용해 다중상속을 구현할 수 있다. 스칼라의 트레잇은 자바의 인터페이스와 비슷하지만, 구체적인 구현을 담을 수 있다는 점에서 큰 차이점을 가진다. with 키워드를이용해 트레잇을 여러개 상속한다면 트레잇은 상속한 순서에 따라 믹스인되어 상속의 모호성 문제("다이아몬드문제")를 피할 수 있다.

 

0 Comments