Mds.Libraries.CSharp.Db.Redis 3.1.0-beta.101934

Mds.Libraries.CSharp.Db.Redis

Пакет для более удобной работы с Redis.

Пакет содержит:

  • Репозиторий и фабрику для работы с Redis
  • Расширенный HealthCheck для Redis
  • Механизм для конфигурации подключения через IRedisConfigurationOptionsHandler
  • Решение для реализации DistibutedLock - IDistributedLocker
  • Решение для реализации Key-Value Storage - KeyValueStorage

IRedisConnectionsFactory

Для работы с Redis может использоваться IRedisConnectionsFactory.

Пример подключения:

var redisConnectionString = /* ... */;
services.AddMdsRedisConnectionsFactory(redisConnectionString);

После этого можно будет получить IRedisConnectionsFactory через DI.

Расширения для IDatabase

Для упрощенной работы с IDatabase есть методы расширения, которые позволяют читать и писать сразу объекты.

IDatabase database = /* ... */;

var key = "key";
var data = new Entity();

database.SetComplex(key, data);
await database.SetComplexAsync(key, data);

var stored = database.GetComplex<Entity>(key);
stored = await database.GetComplexAsync<Entity>(key);

Использование DistributedLock через IDistributedLocker

В пакете реализован сервис, который позволяет реализовать паттерн DistributedLock.

Подключить его можно через в DI.

var redisConnectionString = /* ... */;
services.AddMdsDistributedLock(redisConnectionString);

После этого можно будет получить IDistributedLocker через DI.

Сервис реализован на базе пакета RedLockNet.

KeyValueStorage

В пакете реализован сервис, который позволяет хранить данные в Redis в виде ключ-значение.

Подключить его можно через DI.

// ...
services.AddMdsKeyValueStorage(ConnectionStrings.Redis);
// ...

После этого в DI появится сервис IKeyValueStorage, с помощью которого можно хранить данные в ключ-значение хранилище.

HealthCheck

В проекте реализован расширенный HealthCheck, который позволяет проверить все хосты, которые указаны в строке подключения. И проверить доступность каждого хоста из строки подключения. В AddHealthChecks можно указать с какой политикой будет выполняться проверка Redis на доступность (см. подробнее в Mds.Libraries.CSharp.Server.Health.Tools).


var redisConnectionString = /* ... */;

services.AddHealthChecks()

        .AddMdsRedisHealthCheck(
            redisConnectionString: redisConnectionString, 
            policy: MdsHealthCheckPolicy.Any,
            name: "RedisHealthCheck", 
            tags: new[] { "db", "redis" });

// ...

// Обязательно надо добавить сервис для проверки доступности Redis
services.AddMdsRedisHealthCheckServices();

Конфигурация через IRedisConfigurationOptionsHandler

Этот механизм позволяет конфигурировать подключение к Redis. Этот механизм используется для подготовки подключения в IRedisConnectionsFactory и AddMdsRedisHealthCheck. Основной кейс применения, для которого это было разработано - конфигурация проверки удаленного TLS сертификата.

Пример использования

Готовим обработчик:

internal class SampleConfigurationOptionsHandler : IRedisConfigurationOptionsHandler
{

    public SampleConfigurationOptionsHandler() { }
    

    #region IRedisConfigurationOptionsHandler

    void IRedisConfigurationOptionsHandler.Configure(ConfigurationOptions configurationOptions)
    {
        // ...
    }

    #endregion IRedisConfigurationOptionsHandler
}

Регистрируем обработчик в DI:

services.AddTransient<IRedisoConnectionSettingsHandler, SampleConfigurationOptionsHandler>();

После данных манипуляций этот обработчик будет инстанцирован, когда необходимо будет сконфигурировать подключение через DI. Обработчиков может быть много. Отработает каждый.

Showing the top 20 packages that depend on Mds.Libraries.CSharp.Db.Redis.

Packages Downloads
Expero.Libraries.CSharp.BackgroundTasks
Пакет для работы с фоновыми задачами.
1
Expero.Libraries.CSharp.BackgroundTasks
Пакет для работы с фоновыми задачами.
2

Version Downloads Last updated
3.2.1 1 02/28/2026
3.2.0 1 02/28/2026
3.2.0-beta.110725 1 02/28/2026
3.1.0 1 02/28/2026
3.1.0-beta.101934 1 02/28/2026
3.1.0-beta.98932 1 02/28/2026
3.1.0-beta.98434 1 02/28/2026
3.0.1 1 02/28/2026
3.0.0 1 02/28/2026
3.0.0-beta.66939 1 02/28/2026
2.5.0-beta.11789 1 02/28/2026
2.2.1 1 02/28/2026
2.2.0 1 02/28/2026
2.0.0 1 02/28/2026
1.3.0-beta.8498 1 02/28/2026
1.2.1 1 02/28/2026
1.2.0 1 02/28/2026
1.1.2 1 02/28/2026