Ответ
Redis — это хранилище структур данных в оперативной памяти (in-memory data structure store), которое работает как key-value база данных. Его основная идея — хранение всех данных в RAM, что обеспечивает скорость доступа на уровне микросекунд.
Ключевые принципы работы:
- Хранение в памяти: Все данные находятся в RAM, что гарантирует высокую производительность. Для сохранности данных на диске (персистентности) используются механизмы RDB (снимки состояния) и AOF (журнал операций).
- Однопоточная модель: Redis обрабатывает команды в одном потоке, что исключает race conditions и обеспечивает атомарность операций без сложных блокировок.
- Богатые типы данных: Значением для ключа может быть не только строка, но и более сложные структуры: списки (Lists), множества (Sets), хеши (Hashes), отсортированные множества (Sorted Sets). Это отличает его от простых key-value хранилищ.
- Поддержка 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 чаще всего используется для кеширования результатов тяжелых запросов к основной БД, хранения сессий и реализации простых очередей с помощью списков.