Medium - Redis; What and Why?

원문 - Prateek Gogia

Trend 파악을 위한 Medium 기고문 포스팅 - 레디스는 무엇이고 왜 쓰는 것일까요?

Redis Wikipedia Page Image.

지난 며칠간 직장에서 제 사수님은 갑자기 AWS의 비용을 걱정하기 시작하셨습니다. 왜냐하면 우리 제품의 사용자가 갑자기 늘어났고 때문에 인터렉션과 응답 시간, 데이터베이스 호출이 크게 증가했고 이것은 명백하게 비용을 증가시킬 것이기 때문입니다. 그 때는 제가 아직 IT 업계에서 경력이 적었기 때문에 전체 흐름을 이해하지 못했고 따라서 어떻게 해야 실제로 데이터 베이스 요청을 줄일 수 있는지 몰랐습니다. 그 때까지 아는 것이라고는 데이터 베이스를 통해서 데이터를 절약하는 것이었죠.

저는 틀렸었죠…

어떻게 해야 실제로 데이터 베이스 요청의 수를 줄일 수 있는지 몇시간의 논의끝에 우리는 캐싱 을 이용해서 뭔가를 하기로 결정했습니다.

What is Caching?

캐싱은 캐시에 데이터를 저장하는 프로세스 입니다. 캐시는 일시적인 저장 공간으로 미래에 이 데이터가 사용되면 아주 빠르게 전달될 수 있습니다. 우리는 레디스 를 이용하여 캐싱을 하기로 했습니다.

What is Redis?

레디스 홈페이지에 따르면 레디스는 오픈소스이며 in-memory 데이터 구조체를 저장하고 데이터 베이스에 사용되며 케시와 메시지 전달자 입니다. 문자열, 해시, 리스트, 집합을 비롯하여 다양한 데이터 구조를 지원합니다.

Why use Redis?

  1. C로 작성되어서 정말 아주 매우 무척이나 빠릅니다.

via GIPHY

  1. NoSql 데이터베이스 기반이기 때문에 너무나도 빠릅니다.

So called Pun for Nerds and by Nerds of Databases.

  1. 현재 거대 테크 기업인 깃헙, 웨이보, 핀터레스트, 스냅챗, 스택오버플로우와 같은 곳에서 사용됩니다.

  2. 여러분의 클라우드 데이터베이스 호출을 줄이고 궁극적으로 클라우드 비용을 줄이기 위해서 캐싱을 최적화해야 한다면 레디스를 사용하세요.

  3. 레디스는 개발자 친화적이며 많은 언어를 지원합니다. (JS, Java, Go, C, C++, C#, Python, Object-C, php)

Redis be like, “I’m super cool”

  1. 가장 중요한 점이지만 오픈소스이며 안정적입니다.

sample Redis Commands

레디스에도 문서화가 잘 되어 있지만 간략히 개념전달을 위해 예시 몇개를 보여드리겠습니다. 시연을 위해 Redis-CLI를 사용할 겁니다. 기본적으로 Redis_CLI는 6379 포트에서 동작합니다.

SET (Setting a Key)

shell``` 127.0.0.1:6379> SET foo “Hello World” OK //setting a key


## GET (Getting a Key)

```shell
127.0.0.1:6379> GET foo
"Hello World" //getting a key

DEL (Deleting a Key)

127.0.0.1:6379> GET foo
"Hello World" //getting a key
127.0.0.1:6379> DEL foo
(integer) 1 //key just got deleted
127.0.0.1:6379> GET foo
(nil) //키가 삭제되었기 때문에 nil을 리턴합니다.

SETEX (Setting a key with an expiry)

127.0.0.1:6379> SETEX foo 40 "I said, Hello World!"
OK //해당 키는 40초 후에 만료됩니다.

TTL (Total TIme left for a key that has a timeout)

127.0.0.1:6379> TTL foo
(integer) 36 //36초 후에 타임아웃 됩니다.

PERSIS (Removing the timeout from key)

127.0.0.1:6379> PERSIST foo
(integer) 1 // 키를 영구적으로 만듭니다, 키가 만료되지 않습니다.

RENAME (Renaming the current existing key)

127.0.0.1:6379> RENAME foo bar
OK //키 이름을 foo애서 bar로 변경했습니다

FLUSHALL (Flushing everything so far saved)

127.0.0.1:6379> flushall
OK // 키가 모두 초기화 되었습니다.

방금 소개해 드린 것들이 레디스로 여러분들이 할 수 있는 것입니다. 레디스는 무척이나 강력하기 때문에 저는 응용프로그램 간 데이터 전송을 해야할 일이 있을 때 사용하곤 합니다.

단언컨데 레디스는 최고입니다.

Summary

  • 레디스는 캐싱 관련 오프소스다. 메모리 내에 데이터를 저장하며 데이터 베이스에서도 쓰이고 메시지, 캐시 전달자로 쓰인다.
  • 속도가 아주 빠르다, 다양한 언어를 지원한다, 안정적이다

© 2019. All rights reserved.

Powered by Hydejack v8.1.1