Как устроен Redis

«Как устроен Redis» — вопрос из категории Базы данных, который задают на 24% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Redis — это in-memory key-value хранилище, работающее по принципу однопоточной event-loop модели. Основные особенности:

  1. Хранение данных: все данные хранятся в оперативной памяти, но поддерживается персистентность через RDB (снимки) и AOF (лог операций).

  2. Типы данных: поддерживает не только строки, но и сложные структуры:

    • Lists (двусторонние очереди)
    • Sets/Hashsets
    • Sorted Sets
    • Bitmaps
// Пример работы с Redis в Go (redigo)
conn, _ := redis.Dial("tcp", "localhost:6379")
defer conn.Close()

// SET/GET
conn.Do("SET", "key", "value")
val, _ := redis.String(conn.Do("GET", "key"))
  1. Производительность: достигается за счет:

    • Однопоточной модели (нет contention)
    • Оптимизированных структур данных
    • Протокола RESP (бинарный + текстовый)
  2. Доп. возможности: Pub/Sub, Lua-скрипты, транзакции (MULTI/EXEC), TTL для ключей.