devcken.io

Thoughts, stories and ideas.

Redis Keys in RAM

원문: https://redislabs.com/blog/redis-keys-in-ram/

Dr. Seuss의 "Green Eggs and Ham"을 각색. 텍스트에 대한 링크. 그림은 Dr. Seuss에게 저작권이 있음.

I am San. 나는 San이야.
I am San. 나는 San이야.
San I am. San I am.

That San-I-am! 바로 San-I-am이라고!
That San-I-am! 바로 San-I-am이라고!
I do not like that San-I-am! 난 San-I-am을 좋아하지 않아!

Do you like Redis keys in RAM? 너는 RAM 안에 있는 Redis 키들을 좋아하니?

I do not like them San-I-am 난 그것을 좋아하지 않아, San-I-am
I do not like Redis keys in RAM. 나는 RAM 안에 있는 Redis 키들을 좋아하지 않아

Would you like them large [1] or small? 그들이 큰게 좋아 작은게 좋아?

I would not like them large or small. 그들이 크거나 작은 걸 좋아하지 않아.
I would not like them not at all. 난 그들을 전혀 좋아하지 않을거야.
I do not like Redis keys in RAM. 나는 RAM 안에 있는 Redis 키들을 좋아하지 않아.
I do not like them San-I-am. 나는 그들을 좋아하지 않아 San-I-am.

Would you like them as a String? 그것들이 문자열이길 바래?
Would you serialize everything? 모든 것을 직렬화하길 바래?

I do not like them as a String. 문자열을 좋아하지 않아.
I do not like to serialize things. 직렬화하는 것을 좋아하지 않아.
I do not like them large or small. 그들이 크든 작든 좋아하지 않아.
I do not like them not at all. 나는 그들을 전혀 좋아하지 않아.
I do not like Redis keys in RAM. 나는 RAM 안에 있는 Redis 키들을 좋아하지 않아.
I do not like them San-I-am. 나는 그들을 좋아하지 않아 San-I-am.

Would you like them in a Hash? 그들이 Hash 안에 있길 바라니?
Would you like a Hash as cache? cache 같은 Hash를 바라니?

Not in a Hash. Not as a cache. Hash 안에 있는 걸 바라지 않아. Cache도 바라지 않아.
Not as a String. No serialized, no anything. 문자열 같은 것도. 직렬화도, 어떤 것도 원치 않아.
I do not want them large or small. 난 그들이 크거나 작길 바라지 않아.
I do not want them, not at all. 난 그들을 전혀 원하지 않아.
I do not want Redis keys in RAM. 난 RAM 안에 있는 Redis 키를 원하지 않아.
I do not want them, San-I-am. 난 그들을 원하지 않아, San-I-am.

Would you want them as a List instead? 그러면 대신 List이길 바라니?
Do you want to access tail, body and head? 테일, 본문 그리고 헤드에 액세스하길 원하니?

Not as a List. Not as a Hash. 리스트를 원하지 않아. Hash를 원하지 않아.
Not as a String. Not as a cache. 문자열을 원하지 않아. cache를 원하지 않아.
Small or large I will have naught. 작든 크든 0을 가질 거야.
Goodbye San-I-am and thanks a lot. 안녕 San-I-am 그리고 고마워.

Would you? Could you? As a Set? Set는 어때? 해볼래? 해볼테야?
Get the difference! Store a union! Or just intersect… 차를 구해봐! 합집합을 구해봐! 아니면 교집합을...

I would not, could not, as a Set. 아니 해보고 싶지 않아

You may like them. 그들을 좋아할 수도 있어
You'll see for sure. 확실히 보게 될 거야.
You may like Sorted Sets by score? 스코어에 의한 Sorted Sets를 좋아할지도 몰라.

I would not, could not by a score. 스코어로 하고 싶지도, 할 수도 없어.
No more Sets! I say no more! 더 이상의 Sets는 없어! 더 이상 말하고 싶지 않아!
I do not like them as a List 난 List 같은 것도 좋아하지 않아
Stop this now – I do insist. 이제 그만둬. 분명히 말할게.
I do not like them as String or Hash 문자열이든 Hash든 좋아하지 않아
I do not like an in-memory database or cache. in-memory 데이터베이스든 cache든 좋아하지 않아.
I do not want Redis keys in RAM. RAM 안에 있는 Redis 키들을 좋아하지 않아.
I do not want them, San-I-am. 그들을 좋아하지 않아, San-I-am.

You do not like them. So you say. 넌 그들을 좋아하지 않는구나. 너가 말한대로.
http://try.redis.io! Try them! And you may. http://try.redis.io! 한 번 해봐! 좋아하질도 모른다.
Try them and you may, I say. 한 번 해봐, 내가 말하는데로 좋아할거야.

San! If you will let me be, San! 너가 날 놓아준다고 약속하다면,
I will try them. You will see. 한 번 해볼게. 두고봐.

Say! I like Redis keys in RAM! 우와! 난 RAM 안에 있는 Redis 키들이 좋아!
I do! I like them, San-I-am! 정말이야! 그들이 좋아, San-I-am!
So I will have them as a String. 그러니까 문자열을 가질거야.
And as a Hash, a List or anything. 그리고 Hash, List 어떤 것이든지.
And as a Set – both unordered and an ordered one. 그리고 Set, 정렬되지 않은 것이든 정렬된 것이든.
Say! Data structures are so much FUN! 우와! 데이터 구조는 정말 즐거워!

I do so like Redis keys in RAM 난 RAM 안에 Redis 키들이 정말 좋아
Thank you! Grazie, San-I-am 고마워! 고마워요, San-I-am!


후기 노트

저는 암스테르담에서 열린 Percona Live Europe 2015의 "Use Redis in Odd and Unusual Ways"라는 주제의 일부분으로 위와 같은 내용을 발표했습니다. 주요 주제는 MySQL로 이루어진 반면, 컨퍼런스의 프로그램에 Redis에 관한 내용은 4개 세션 밖에 없었습니다. 제 발표를 제외하고 말이죠. Redis 옹호자가 되는 것, 그것이 아마도 내가 바라는 최선의 방법일 것이나, 발표자로써 그것은 도전이었습니다. Redis에 대한 경험을 지닌 청중 뿐만 아니라 NoSQL에 대한 경험을 지닌 청중과 관련된 대화를 어떻게 준비해야 할까?

그래서 결론은 Redis와 대한 기초 주제와 고급 주제를 섞는 것이었고 Redis 베테랑 뿐만 아니라 Redis가 처음인 사람에게 도움이 되길 바랬습니다. DR.ediseuss라는 모티브는 약간의 배경에 가치를 둘 만 합니다. 나 이전의 많은 사람들이 그랬듯이, 내가 빨간 벽돌이 깔린 길에 첫발을 내디뎠을 때처럼, 무언가 API의 네이밍 스키마에 현혹되었습니다. [2] 모든 것을 흡수하면서, 나는 그 모든 것에 대한 첫 단계였던 작은 "시"를 생각해냈습니다. 다음은 여러분의 즐거운을 위한, "Dr. Seuss Reads Redis" 책의 첫번째 (그리고 유일한) 페이지입니다:

This is my friend
His name is ZADD
ZADD's a lad
Who's always SADD

It's really bad
that ZADD is SADD
I don't know why
And that makes me SCARD

I hope that ZADD
Will be someday glad
And that he'll get over
This stupid PFADD

문제가 있나요? 열렬히 환호해 주실건가요? 이메일이나 트윗하세요. 언제나 환영합니다 🙂


FN#1 Redis의 키는 512MB까지 가능하며 바이너리에 안전합니다. Simple string 값은 512MB까지 가능하며 역시 바이너리에 안전합니다. 다른 데이터 구조체들은 2^32개의 요소, 512MB까지 가능합니다.

FN#2 시작하는 이들을 위한 격려의 메모 - 금방 완벽하게 자리를 잡을 것이고 처음에 무엇때문에 그렇게 현혹되었는지를 염려하게 될 것입니다 🙂