Secondo questa guida: link
Dicono:
Si noti che il client StackExchange.Redis utilizza il multiplexing attraverso una singola connessione. L'utilizzo consigliato è creare un'istanza del client all'avvio dell'applicazione e utilizzare questa istanza per tutte le operazioni sulla cache. Per questo motivo, la connessione alla cache viene eseguita una sola volta e quindi tutte le istruzioni in questa sezione sono correlate al criterio di retry per questa connessione iniziale e non per ogni operazione che accede alla cache.
In questo momento ho qualcosa di simile a questo:
public static Models.UserProfile GetUserProfile(string identityname)
{
/// It needs to be cached for every user because every user can have different modules enabled.
try
{
var cachekeyname = "UserProfileInformation|" + identityname;
IDatabase cache = CacheConnectionHelper.Connection.GetDatabase();
Models.UserProfile userProfile = new Models.UserProfile();
object obj = cache.Get(cachekeyname);
Posso spostare la linea di connessione su global.asax
protected void Application_Start()
{
IDatabase cache = CacheConnectionHelper.Connection.GetDatabase();
}
Se sposto quella linea, come posso ottenere quell'istanza sugli altri metodi in cui ho bisogno di usarla?
questo è l'helper della connessione cache
public class CacheConnectionHelper
{
private static Lazy<ConnectionMultiplexer> lazyConnection = new Lazy<ConnectionMultiplexer>(() =>
{
return ConnectionMultiplexer.Connect(SettingsHelper.AzureRedisCache);
});
public static ConnectionMultiplexer Connection
{
get
{
return lazyConnection.Value;
}
}
}
Come non so molto dei pattern, forse questo è un singleton? ma non ho idea di come implementarlo!