TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.76K subscribers
Post #2231 2.68K
День 1846. #ЗаметкиНаПолях
Используем Redis в .NET 8

Redis — это хранилище данных в памяти с открытым исходным кодом, используемое в качестве БД, кэша или брокера сообщений. Он отличается скоростью и гибкостью, что делает его отличным выбором для кэширования в современных приложениях. Сегодня рассмотрим, как использовать Redis для кэширования в приложении .NET 8.

Настройка Redis с Docker в Windows
Docker предоставляет простой и понятный способ запуска Redis без необходимости установки Redis на машину. Установите Docker Desktop для Windows, если необходимо. Убедитесь, что функция WSL 2 включена.

Запустите Docker Desktop. В первый раз это может занять несколько минут. Откройте окно терминала и запустите Redis в контейнере Docker:
docker run --name my-redis -p 6379:6379 -d redis

Здесь:
--name my-redis – имя контейнера.
-p 6379:6379 – привязка порта контейнера к порту машины.
-d – запускает контейнер в независимом режиме (если вы закроете окно терминала, контейнер продолжит работу).
redis – использует образ Redis из Docker Hub.

Проверим, что контейнер запущен:
docker ps

Вы должны видеть my-redis среди запущенных контейнеров. Чтобы остановить контейнер, выполните команду:
docker stop {container_id}

используя container_id, показанный в выводе команды docker ps.

Использование Redis в приложении
Создадим новое консольное приложение:
dotnet new console -n HelloRedis
cd HelloRedis

Добавим пакет StackExchange.Redis:
dotnet add package StackExchange.Redis


Вот пример программы с сохранением объекта в кэш и получением из него, используя сериализацию/десериализацию:
using System.Text.Json;
using StackExchange.Redis;

// Подключаемся к серверу Redis
var redis = ConnectionMultiplexer
.Connect("localhost");
var db = redis.GetDatabase();

var user = new User(1, "John Doe", "john@email.com");

// Сохраняем объект с ключом "user:1".
await db.StringSetAsync("user:1",
JsonSerializer.Serialize(user));

// Получаем объект из Redis
var cached = await db.StringGetAsync("user:1");
if (cached is null)
{
Console.WriteLine("Не найдено в кэше");
return;
}

var cachedUser =
JsonSerializer.Deserialize<User>(cached);
if (cachedUser is null)
{
Console.WriteLine("Ошибка десериализации");
return;
}

Console.WriteLine($"User: {cachedUser.Name}, Email: {cachedUser.Email}");

public record User(int Id, string Name, string Email);

Полный пример можно посмотреть на GitHub.

Итого
Интеграция Redis в ваши приложения обеспечивает надёжный механизм кэширования, повышающий производительность и масштабируемость. Docker упрощает управление экземпляром Redis, сохраняя среду разработки чистой и понятной. Здесь мы рассмотрели только основы работы, подробности можно посмотреть в документации Redis.

Источник: https://ardalis.com/hello-redis-getting-started-with-redis-dotnet/
  • 👍 23
  • 👎 1
More from @netdeveloperdiary
  1. Oct 8, 2026День 2808. #Карьера 5 Навыков, Которые Помогут Быстрее Стать Сеньором. Начало В ИТ есть се…
  2. Oct 7, 2026День 2807. #ЗаметкиНаПолях Типы Коллекций в .NET, Которые Стоит Попробовать. Окончание Нач…
  3. Oct 6, 2026🦈 Открытое собеседование на Middle C# | 6 октября, 19:00 МСК Приглашаем на открытое собес…
  4. Oct 6, 2026День 2806. #ЗаметкиНаПолях Типы Коллекций в .NET, Которые Стоит Попробовать. Начало Больши…
  5. Oct 5, 2026День 2805. #ЧтоНовенького #NET11 Аргументы в Выражениях Коллекций в C#15 В C#15 реализован…
  6. Oct 4, 2026День 2804. #ВопросыНаСобеседовании Марк Прайс предложил свой набор из 60 вопросов (как тех…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →