Redis.EasyConnectMultiServers
PTBR Version
Package for ease integration with multiple servers Redis. 📦
AddRedisProviderMultiServers
: Inject a singleton instance of IRedisProviderMultiServers
.
IRedisProviderMultiServers
Abstraction responsible for provider contracts that operations of CRUD in multiple servers
var configurations = new [ ]
{
new RedisConfiguration
{
AbortOnConnectFail = true ,
KeyPrefix = " MyPrefix__" ,
Hosts = new [ ] { new RedisHost { Host = " localhost" , Port = 6379 } } ,
AllowAdmin = true ,
ConnectTimeout = 5000 ,
Database = 0 ,
PoolSize = 5 ,
IsDefault = true
} ,
new RedisConfiguration
{
AbortOnConnectFail = true ,
KeyPrefix = " MyPrefix__" ,
Hosts = new [ ] { new RedisHost { Host = " localhost" , Port = 6389 } } ,
AllowAdmin = true ,
ConnectTimeout = 5000 ,
Database = 0 ,
PoolSize = 2 ,
Name = " Secndary Instance"
}
} ;
services. AddRedisProviderMultiServers ( configurations) ;
public class WeatherForecastController
{
private readonly IRedisProviderMultiServers _redisProviderMultiServers ;
public WeatherForecastController ( IRedisProviderMultiServers redisProviderMultiServers ) =>
_redisProviderMultiServers = redisProviderMultiServers ;
}
Write in all servers configured
await _redisProviderMultiServers. AddAsync ( Guid. NewGuid ( ) . ToString ( ) , " value" ) ;
await _redisProviderMultiServers. ReplaceAsync ( Guid. NewGuid ( ) . ToString ( ) , " value" ) ;
Write only in default server: IsDefault = true
await _redisProviderMultiServers. AddDefaultClientAsync ( Guid. NewGuid ( ) . ToString ( ) , " value" ) ;
await _redisProviderMultiServers. ReplaceDefaultClientAsync ( Guid. NewGuid ( ) . ToString ( ) , " value" ) ;
The get is performed from the client default : IsDefault = true
.
The method responds as soon as it finds the key, not continuing with the get on other servers.
await _redisProviderMultiServers. GetAsync < string > ( guid. ToString ( ) ) ;
Remove in all servers configured
Remove only in default server: IsDefault = true
await _redisProviderMultiServers. RemoveAsync ( key) ;
await _redisProviderMultiServers. RemoveDefaultClientAsync ( key) ;