Redis λŠ” μ˜€ν”ˆμ†ŒμŠ€μ΄λ©° λ©”λͺ¨λ¦¬λ₯Ό μ΄μš©ν•œ ν‚€-κ°’ νŽ˜μ–΄λ‘œ μ €μž₯ν•˜λŠ” λ°μ΄ν„°λ² μ΄μŠ€μž…λ‹ˆλ‹€. λ”°λΌμ„œ 일반 λ””μŠ€ν¬μ— μ €μž₯ν•˜λŠ” λ°μ΄ν„°λ² μ΄μŠ€λ³΄λ‹€ 속도가 μ›”λ“±νžˆ λ›°μ–΄λ‚˜λ©° μ›Ήμ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μœ μš©ν•˜κ²Œ μ‚¬μš©λ  수 μžˆμŠ΅λ‹ˆλ‹€.

Redis λŠ” λ‹€λ₯Έ 경쟁 λ°μ΄ν„°λ² μ΄μŠ€μ™€ λΉ„κ΅ν–ˆμ„ λ•Œ λ‹€μŒκ³Ό 같은 차이점이 μžˆμŠ΅λ‹ˆλ‹€.

  • Redis λŠ” λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ™„μ „νžˆ λ©”λͺ¨λ¦¬μ— μ €μž₯ν•˜λ©° μ˜μ†μ„±μ„ μœ„ν•΄μ„œλ§Œ λ””μŠ€ν¬λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

  • Redis λŠ” λ‹€λ₯Έ ν‚€-κ°’ μ €μž₯ν˜•νƒœλ₯Ό μ‚¬μš©ν•˜λŠ” λ°μ΄ν„°λ² μ΄μŠ€λ“€κ³Ό λΉ„κ΅ν–ˆμ„ λ•Œ μƒλŒ€μ μœΌλ‘œ λ‹€μ–‘ν•œ 데이터 νƒ€μž…μ„ μ§€μ›ν•©λ‹ˆλ‹€.

  • Redis λŠ” λ¬΄μ œν•œμ˜ 슬레이브 볡제λ₯Ό κ°€λŠ₯ν•˜κ²Œ ν•©λ‹ˆλ‹€.

Redis Advantages (λ ˆλ””μŠ€μ˜ μž₯점)

  • Exceptionally Fast (맀우 λΉ λ₯Έ 속도) : Redis λŠ” 맀우 λΉ λ₯Έ 속도λ₯Ό μžλž‘ν•©λ‹ˆλ‹€. μ΄ˆλ‹Ή 110000 건의 μ—…λ°μ΄νŠΈκ°€ κ°€λŠ₯ν•˜λ©°, μ•½ 81000 건의 μ‘°νšŒκ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€.

  • Supports Rich data types (λ‹€μ–‘ν•œ 데이터 νƒ€μž… 지원) : Redis λŠ” 기본적으둜 κ°œλ°œμžλ“€μ΄ μ•Œκ³ μžˆλŠ” λŒ€λΆ€λΆ„μ˜ 데이터 νƒ€μž…μ„ μ§€μ›ν•©λ‹ˆλ‹€. λ¦¬μŠ€νŠΈ(list), 집합(set), μ •λ ¬λœ μ…‹(sorted set), 해쉬(hashes) 등을 λͺ¨λ‘ μ§€μ›ν•©λ‹ˆλ‹€. λ”°λΌμ„œ μ™ λ§Œν•œ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄μ„œ νŠΉλ³„νžˆ 곡을 λ“€μ—¬ νŠΉμ • 데이터 νƒ€μž…μ— λ§žλ„λ‘ 섀계할 ν•„μš”κ°€ μ—†μ–΄μ§‘λ‹ˆλ‹€.

  • Operations are atomic (λ™μž‘μ˜ μ›μžμ„±) : λͺ¨λ“  λ ˆλ””μŠ€ μ˜€νΌλ ˆμ΄μ…˜μ€ μ›μžμ„±μ„ 띄기 λ•Œλ¬Έμ—, 두 λͺ… μ΄μƒμ˜ μ‚¬μš©μžκ°€ λ™μ‹œμ— λ ˆλ””μŠ€ μ„œλ²„μ— 접속할 경우 μ—…λ°μ΄νŠΈλœ 값을 μ‘°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • MultiUtility Tool () : Redis λŠ” λ©€ν‹° μœ ν‹Έλ¦¬ν‹° 툴이고 λ‹€μ–‘ν•œ μΌ€μ΄μŠ€μ— μ‚¬μš©λ  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Όλ“€λ©΄ μΊμ‹±(caching), λ©”μ‹œμ§€ 큐(messaging-queues), λ˜λŠ” μ„Έμ…˜ μ •λ³΄λ‚˜ μ›ΉνŽ˜μ΄μ§€ λ°©λ¬Έμžμˆ˜μ™€ 같은 짧은 κΈ°κ°„λ™μ•ˆμ—λ§Œ ν•„μš”ν•œ 데이터듀을 μ €μž₯ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ  수 있죠.

λ ˆλ””μŠ€κ°€ λ‹€λ₯Έ ν‚€ - κ°’ μ €μž₯ DB에 λΉ„ν•΄ λ‹€λ₯Έ 점?

  • Redis λŠ” 더 λ³΅μž‘ν•œ 데이터 νƒ€μž…μ„ κ°’μœΌλ‘œ μ €μž₯ν•  수 μžˆλ‹€λŠ” 점과 그런 데이터 νƒ€μž…μ„ μ €μž₯ν•˜κ±°λ‚˜ μ‘°νšŒν•˜λŠ”λ° atomic 접근을 보μž₯ν•˜κΈ° λ•Œλ¬Έμ— μ—¬νƒ€μ˜ ν‚€-κ°’ μ €μž₯ DBμ™€λŠ” λ‹€λ₯Έ 길둜 진화λ₯Ό ν–ˆλ‹€κ³  λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

  • Redis λŠ” in-memory κΈ°λ°˜μ΄μ§€λ§Œ λ””μŠ€ν¬μ— μ˜μ†μ μΈ λ°μ΄ν„°λ² μ΄μŠ€μ΄κΈ° λ•Œλ¬Έμ— λ©”λͺ¨λ¦¬μ— μ €μž₯될 수 μ—†μ„λ§ŒνΌ λ§Žμ€ μ–‘μ˜ 데이터λ₯Ό μ €μž₯ν•  μˆ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€. in-memory databases의 μž₯점은 λ³΅μž‘ν•œ 데이터 ꡬ쑰λ₯Ό λ‹€λ£¨λŠ” 것이 λ””μŠ€ν¬μ— μ €μž₯된 λ™μΌν•œ 데이터 ꡬ쑰λ₯Ό λ‹€λ£¨λŠ” 것보닀 μ‰½λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. 이게 무슨 λ§μΈμ§€λŠ” 아직 잘 이해가 되질 μ•Šλ„€μš”.


Install Redis on Ubuntu (μš°λΆ„νˆ¬μ— λ ˆλ””μŠ€ μ„€μΉ˜ν•˜κΈ°)

μš°λΆ„νˆ¬μ— λ ˆλ””μŠ€λ₯Ό μ„€μΉ˜ν•˜κΈ° μœ„ν•΄μ„œλŠ” 터미널 μ°½μ—μ„œ μ•„λž˜μ™€ 같은 λͺ…λ Ήμ–΄λ₯Ό μž…λ ₯ν•˜λ©΄ λ©λ‹ˆλ‹€.

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


Start Redis (λ ˆλ””μŠ€ μ‹œμž‘ν•˜κΈ°)

$redis-server

μ•„μ£Ό κ°„λ‹¨ν•˜μ£ ?

Check if redis is working? (λ ˆλ””μŠ€κ°€ λ™μž‘ν•˜λŠ”μ§€ ν™•μΈν•˜κΈ°)

$redis-cli

이 λͺ…λ Ήμ–΄λŠ” μ•„λž˜μ™€ 같은 λ ˆλ””μŠ€ ν”„λ‘¬ν”„νŠΈλ₯Ό λ„μ›λ‹ˆλ‹€.

redis 127.0.0.1:6379>


이제 ping을 λ‚ λ €λ΄…μ‹œλ‹€.

redis 127.0.0.1:6379> ping
PONG

그러면 μœ„ 처럼 PONGλΌλŠ” 단어가 좜λ ₯이 λ˜μ•Ό ν•©λ‹ˆλ‹€. μ—¬κΈ°κΉŒμ§€ 됐닀면 λ ˆλ””μŠ€κ°€ μ •μƒμ μœΌλ‘œ μ„€μΉ˜λœ κ²ƒμž…λ‹ˆλ‹€.