Nastavení prefixu v RedLock.net nugetu

RedLock.net je knihovna pro lockování nad Redisem skrz algoritmus, který umí locky využívat distribuovaně napříč několika redis instancemi. Což v tuto chvíli nepotřebuji ale je dobré začít implementovat s něčím, co funguje i nad jednou instancí a je to potenciálně škálovatelné.

Locky, které knihovna vytváří, mají nastavený prefix redlock: což se mi úplně nehodí, společně s lockama jsem chtěl ještě ukládat informaci o počtu čekajících vláken pro monitoring. Nakonec to není tak těžké, prefix lze změnit skrz veřejnou propertu. Stačí jen při inicializaci RedLockFactory v IoC nastavit toto.

sc.AddSingleton(sp =>
{
    var redLockMx = (RedLockMultiplexer)(ConnectionMultiplexer)sp.GetService<IConnectionMultiplexer>();
    redLockMx.RedisKeyFormat = "myprefix:{0}";
    return RedLockFactory.Create(new List<RedLockMultiplexer> { redLockMx });
});

Bacha na to, že RedLockMultiplexer má implicitní konverzi z ConnectionMultiplexer

A taky bacha na to, že u prefixu nesmíte zapomenout na {0} což nahradí název locku samotného.