CACHÉ REDIS
Caché Redis es un tipo de almacenamiento, como session, pero en Azure, es decir, este tipo de caché permanece disponible entre las diferentes aplicaciones que lo implementen y si, por ejemplo, tuviésemos un carrito de la compra en el navegador de un ordenador, podríamos seguir teniendo ese carrito disponible si abrimos la aplicación en el movil.
Para crear un almacenamiento Redis debemos seguir los siguientes pasos:
1. Abrimos el portal de Azure.
2. Crear nuevo recurso.
3. Buscamos Bases de datos y seleccionamos Redis Cache.
4. Seleccionamos tipo de suscripción, grupo de recursos, el nombre de DNS, la ubicación y el tipo de caché.
5. Revisar y crear.
Una vez que hemos creado el recurso, lo abrimos y en el margen izquierdo buscamos la optión configuración/claves de acceso.
Para trabajar con Redis necesitamos utilizar la cadena de conexión principal, por lo que la copiamos y la pegaremos en nuestro archivo appsettings.json de nuestro proyecto.
A continuación crearemos una aplicación MVC de .Net Core para almacenar elementos y otra aplicación de consola para comprobar que no importa desde donde llamamos a la caché de Redis, porque la información almacenada seguirá disponible entre ambas aplicaciones.
Una vez hayamos creado el proyecto MVC, el siguiente paso es instalar los NuGet, en este caso son dos:
Aunque colocaremos más adelante la cadena de conexión principal que hemos recuperado de Azure, en el Startup.cs, para poder trabajar con Redis necesitamos una clase static con dos métodos: uno para crear la conexión y otro para acceder a ella.
// creamos la conexión con ConnectionMultiplexer
private static Lazy<ConnectionMultiplexer>
Crearconexion = new Lazy<ConnectionMultiplexer>(
() => { return ConnectionMultiplexer.Connect(
"CADENA DE CONEXIÓN PRINCIPAL");
});
Al ser una clase estática no podemos inyectar la cadena de conexión desde Startup.cs, sino que hay que colocarla a mano.
// recuperamos la conexión
public static ConnectionMultiplexer Connection
{
get { return Crearconexion.Value; }
}
Para empezar a almacenar en Redis únicamente tenemos que inicializar una variable de tipo IDatabase llamando al método Connection que acabamos de crear.
private IDatabase redis;
public HomeController()
{
this.redis = CacheRedisMultiplexer.Connection.GetDatabase();
}
Métodos:
- Almacenar:
this.redis.StringSet("KEY",JsonConvert.SerializeObject(OBJETO),
TimeSpan.FromMinutes(5));
- Recuperar:
this.redis.StringGet("KEY");
- Eliminar:
this.redis.KeyDelete("KEY");
Nos dirigimos al Startup.cs y configuramos StackExchangeRedisCache.
public void ConfigureServices(IServiceCollection services)
{
services.AddStackExchangeRedisCache(op => op.Configuration = this.Configuration["redis"]);
}
Autor/a: Carlota Lobo Sanz
Curso: Desarrollo Web Full Stack, MultiCloud y Multiplataforma
Centro: Tajamar
Año académico: 2020-2021
Código / recursos utilizados / Otros datos de interés: https://github.com/carlotaLobo/PostCacheRedis.git