Skip to main content
net10.0

Quartz.NET Redis integration - distributed lock handler for clustered scheduling; Quartz Scheduling Framework for .NET

Published
Sep 13, 2026
1mo ago
Total Downloads
10.0K
9,954

Install

dotnet add package Quartz.Extensions.Redis --version 4.1.0
ProductVersions
.NET
net10.0

README

Quartz.Extensions.Redis

Quartz.Extensions.Redis provides a Redis-based distributed lock handler that replaces the database row locks a clustered Quartz.NET scheduler otherwise coordinates trigger acquisition with.

The default handler takes SELECT ... FOR UPDATE locks on the QRTZ_LOCKS table. Under heavy scheduling load that shows up as deadlocks, lock-wait timeouts and contention on one row. This handler uses Redis SET NX PX instead; job and trigger data stays where it was.

Installation

dotnet add package Quartz.Extensions.Redis

Usage

builder.Services.AddQuartz(q => q.UsePersistentStore(store =>
{
    store.UseSqlServer(connectionString);
    store.UseClustering();

    // job and trigger data stays in the database; only the locks move to Redis
    store.UseRedisLockHandler(redis => redis.RedisConfiguration = "redis-server:6379");
}));

UseRedisLockHandler hangs off the same store configurator with or without a host, and the flat quartz.jobStore.lockHandler.* keys configure the same handler. RedisLockHandlerOptions carries the connection string, the key prefix (quartz:lock:), the lock time to live (30 seconds) and the retry interval (100 milliseconds); the scheduler name that namespaces the keys comes from the job store, not from you.

Documentation

https://www.quartz-scheduler.net/documentation/quartz-4.x/packages/redis.html

Changes from Previous Version

Adoption Assessment

A verified publisher signal is available. Assess fit from the package's supported frameworks, license and dependency graph rather than popularity alone.

Compatibility metadata lists 1 target framework; confirm the exact target used by your application.

Related Guides & Workflows

Learn how to evaluate, integrate, or audit this package in your .NET project.