/// <summary> /// Add lock instance to di /// </summary> /// <param name="b"></param> /// <param name="connect"><see cref="IConnectionMultiplexer"/> factory</param> /// <returns></returns> public static IRedisRedlockBuilder AddInstance(this IRedisRedlockBuilder b, Func <IConnectionMultiplexer> connect) { b.Services.AddSingleton(p => { var logger = p.GetRequiredService <ILogger <RedisRedlockInstance> >(); var key = p.GetRequiredService <IOptions <RedisRedlockOptions> >().Value.RedisKeyFromResourceName; var clockDriftFactor = p.GetRequiredService <IOptions <RedlockOptions> >().Value.ClockDriftFactor; return(RedisRedlockInstance.Create(connect(), key, clockDriftFactor, logger)); }); return(b); }
/// <summary> /// Add lock instance to di /// </summary> /// <param name="b"></param> /// <param name="connect"><see cref="IConnectionMultiplexer"/> factory</param> /// <param name="name">Instance name (ToString and logs)</param> /// <returns></returns> public static IRedisRedlockBuilder AddInstance(this IRedisRedlockBuilder b, Func <IConnectionMultiplexer> connect, string name) { b.AddInstance(connect, -1, name); return(b); }
/// <summary> /// Add lock instance to di /// </summary> /// <param name="b"></param> /// <param name="opt">Options for <see cref="ConnectionMultiplexer.Connect(ConfigurationOptions,System.IO.TextWriter)"/></param> /// <param name="name">Instance name (ToString and logs)</param> /// <returns></returns> public static IRedisRedlockBuilder AddInstance(this IRedisRedlockBuilder b, ConfigurationOptions opt, string name) => b.AddInstance(() => ConnectionMultiplexer.Connect(opt), name);
/// <summary> /// Configure <see cref="RedisRedlockOptions"/> /// </summary> /// <param name="b"></param> /// <param name="buildOpt">Configure options</param> public static IRedisRedlockBuilder ConfigureOptions(this IRedisRedlockBuilder b, Action <RedisRedlockOptions> buildOpt) { b.Services.Configure(buildOpt); return(b); }
/// <summary> /// Add lock instance to di /// </summary> /// <param name="b"></param> /// <param name="connection">Connection string for <see cref="ConnectionMultiplexer.Connect(string,System.IO.TextWriter)"/></param> /// <param name="name">Instance name (ToString and logs)</param> /// <returns></returns> public static IRedisRedlockBuilder AddInstance(this IRedisRedlockBuilder b, string connection, string name) => b.AddInstance(() => ConnectionMultiplexer.Connect(connection), name);