Skip to content

OwnRedis-Team/OwnRedis.Backend

Repository files navigation

OwnRedis.Backend

Собственная реализация распределённого кеша на ASP.NET Core с трёхуровневым хранением, фоновыми сервисами и REST API.

Возможности

  • Ключ-значение с произвольными типами (строки, числа, объекты, массивы)
  • Настраиваемый TTL для каждого ключа
  • Три уровня хранения: RAM → Fallback → База данных
  • Автоматическая очистка просроченных ключей фоновыми сервисами
  • Снапшоты в JSON для восстановления после перезапуска
  • REST API со Swagger-документацией
  • Опциональное персистентное хранение в SQL Server
  • Потокобезопасность на основе ConcurrentDictionary
  • NuGet-клиент для подключения из других проектов

Требования

  • .NET 8.0 SDK
  • SQL Server (опционально, можно отключить в настройках)

Установка и запуск

1. Клонирование репозитория

git clone https://github.com/OwnRedis-Team/OwnRedis.Backend.git
cd OwnRedis.Backend

2. Настройка

Отредактируйте OwnRedis.Server/appsettings.json:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=localhost;Database=OwnRedisDb;User ID=sa;Password=YourPassword;TrustServerCertificate=True;"
  },
  "CacheTtlSettings": {
    "RamToFallback": "00:00:15",
    "FallbackToDb": "00:10:00",
    "CleanupDelay": "00:00:05"
  },
  "CacheOptions": {
    "UseDatabaseLayer": false
  },
  "SnapshotSettings": {
    "IntervalSeconds": 60,
    "FilePath": "cache_snapshot.json"
  }
}

Для работы без базы данных оставьте UseDatabaseLayer: false — кеш будет работать только в памяти.

3. Применение миграций (если используется БД)

dotnet tool install --global dotnet-ef
cd OwnRedis.Server
dotnet ef database update

4. Запуск

dotnet run --project OwnRedis.Server

Сервер запустится на http://localhost:5000 (или порт, указанный в launchSettings.json).

5. Проверка

Swagger доступен по адресу: http://localhost:5000/swagger

Структура проекта

OwnRedis.Backend/
├── OwnRedis.Core/          # Общие модели и интерфейсы
├── OwnRedis.Server/        # ASP.NET Core сервер
└── OwnRedis.Client/        # NuGet-пакет клиента

API

Метод Путь Описание
GET /api/cache/{key} Получить значение
POST /api/cache Сохранить значение
DELETE /api/cache/{key} Удалить значение
GET /api/cache/exists/{key} Проверить существование
GET /api/cache/ram/all Все ключи в RAM
GET /api/admin/stats Статистика и логи

Настройки

Параметр Описание По умолчанию
CacheTtlSettings.RamToFallback Доп. время в Fallback после RAM 15 сек
CacheTtlSettings.FallbackToDb Запас TTL для БД 10 мин
CacheTtlSettings.CleanupDelay Интервал фоновой очистки 5 сек
CacheOptions.UseDatabaseLayer Включить БД false
SnapshotSettings.IntervalSeconds Интервал снапшотов 300
SnapshotSettings.FilePath Путь к файлу снапшота cache_snapshot.json

Клиент

Для подключения кеша к своему проекту используйте NuGet-пакет OwnRedis.Client.

Лицензия

MIT License

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors