К какому типу NoSQL-баз данных относится Redis?

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

Ответ

Redis — это in-memory хранилище типа «ключ-значение» (key-value store), которое также часто называют структурным сервером данных (data structure server).

Ключевые характеристики:

  • Модель данных: Простые пары ключ-значение, где ключ — строка, а значение может быть одним из сложных типов данных: строкой (String), списком (List), множеством (Set), упорядоченным множеством (Sorted Set), хешем (Hash) или потоком (Stream).
  • Хранение: Данные в основном хранятся в оперативной памяти (RAM), что обеспечивает очень высокую производительность (операции за микросекунды). Для persistence поддерживается периодический снимок (RDB) и лог операций (AOF).
  • Свойства: Однопоточная модель выполнения команд, поддержка транзакций, Pub/Sub, Lua-скрипты, репликация, кластеризация.

Пример использования (Java с Jedis):

import redis.clients.jedis.Jedis;

public class RedisExample {
    public static void main(String[] args) {
        // Подключение к локальному Redis
        try (Jedis jedis = new Jedis("localhost", 6379)) {
            // Простая операция "ключ-значение"
            jedis.set("user:1000:name", "Alice");
            String userName = jedis.get("user:1000:name");
            System.out.println(userName); // Alice

            // Работа со структурой Hash
            jedis.hset("user:1000", "email", "alice@example.com");
            jedis.hset("user:1000", "age", "30");
            String email = jedis.hget("user:1000", "email");
            System.out.println(email); // alice@example.com
        }
    }
}

Типичные сценарии: Кэширование, управление сессиями, очереди сообщений (используя List), leaderboards (используя Sorted Set), Pub/Sub для реального времени.