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 ) ;