Какой принцип работы у Redis?

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

Ответ

Redis — это хранилище структур данных в оперативной памяти (in-memory data structure store), которое работает как key-value база данных. Его основная идея — хранение всех данных в RAM, что обеспечивает скорость доступа на уровне микросекунд.

Ключевые принципы работы:

  1. Хранение в памяти: Все данные находятся в RAM, что гарантирует высокую производительность. Для сохранности данных на диске (персистентности) используются механизмы RDB (снимки состояния) и AOF (журнал операций).
  2. Однопоточная модель: Redis обрабатывает команды в одном потоке, что исключает race conditions и обеспечивает атомарность операций без сложных блокировок.
  3. Богатые типы данных: Значением для ключа может быть не только строка, но и более сложные структуры: списки (Lists), множества (Sets), хеши (Hashes), отсортированные множества (Sorted Sets). Это отличает его от простых key-value хранилищ.
  4. Поддержка TTL: Для каждого ключа можно установить время жизни (Time To Live), после которого он автоматически удаляется, что идеально для кеширования.

Пример использования для кеширования в .NET (C#) с помощью библиотеки StackExchange.Redis:

using StackExchange.Redis;

// Подключение
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost");
IDatabase db = redis.GetDatabase();

// Запись строки с TTL (20 секунд)
db.StringSet("user:1000:name", "Alice", TimeSpan.FromSeconds(20));

// Чтение
string userName = db.StringGet("user:1000:name");
Console.WriteLine(userName); // Alice

// Работа с хешем (Hash)
db.HashSet("user:1000", new HashEntry[] {
    new HashEntry("email", "alice@example.com"),
    new HashEntry("score", "1500")
});

В моих проектах Redis чаще всего используется для кеширования результатов тяжелых запросов к основной БД, хранения сессий и реализации простых очередей с помощью списков.