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.