Almacenar Información Temporal con Azure Cache Redis

Para poder almacenar información temporal en Azure utilizaremos Cache Redis.

Esta base de datos temporal nos permite almacenar información y compartirla entre nuestras aplicaciones sin que esta información persista en el tiempo.

Creación

Lo primero que haremos será entrar en el portal de Azure y buscaremos Cache Redis:

Y Crearemos nuestro nuevo Cache Redis:

A continuación agregaremos los NuGets correspondientes a nuestro proyecto MVC:

Crearemos el modelo que vamos a utilizar:

Sobre Sobre wwwroot, creamos una carpeta llamada documents y crearemos un XML en esta:

A continuación vamos a crear una carpeta llamada Helpers en donde crearemos nuestro Path Provider:

Continuaremos creando otra carpeta, esta llamada Repositories y una clase llamada RepositoryCoches dentro:

Ahora vamos a crear un controlador llamado CochesController y crearemos las vistas:

Y terminaremos esto resolviendo las dependencias en Startup:

services.AddSingleton();
services.AddTransient();

Ahora vamos con la implementación de Cache Redis.

Empezaremos copiando las claves de acceso de Cache Redis y añadiéndolas a appsettings.json

Y en startup:

Sobre Helpers añadiremos una clase llamada CacheRedisMultiplex:

Y procederemos a crear un servicio para consumir Cache Redis:

public class ServiceCacheRedis
{
    private IDatabase database;

    public ServiceCacheRedis()
    {
        this.database =
            CacheRedisMultiplexer.GetConnection.GetDatabase();
    }
    public void AñadirAfavoritos(Coche coche)
    {
        string jsonCoches = this.database.StringGet("favoritos");
        List<Coche> favoritos;
        if (jsonCoches == null)
        {
            favoritos = new List<Coche>();
        }
        else
        {
            favoritos = JsonConvert.DeserializeObject<List<Coche>>(jsonCoches);
        }
        favoritos.Add(coche);
        jsonCoches = JsonConvert.SerializeObject(favoritos);
        this.database.StringSet("favoritos", jsonCoches);
    }
    public List<Coche> VerCochesFavoritos()
    {
        string jsonProductos = this.database.StringGet("favoritos");
        if (jsonProductos == null)
        {
            return null;
        }
        else
        {
            List<Coche> favoritos =
                JsonConvert.DeserializeObject<List<Coche>>(jsonProductos);
            return favoritos;
        }
    }
    public void BorrarCocheFavorito(int idcoche)
    {
        string jsonCoches = this.database.StringGet("favoritos");
        if (jsonCoches != null)
        {
            List<Coche> favoritos =
                JsonConvert.DeserializeObject<List<Coche>>(jsonCoches);

            Coche eliminar =
                favoritos.SingleOrDefault(z => z.IdCoche == idcoche);
            favoritos.Remove(eliminar);
            if (favoritos.Count() == 0)
            {
                this.database.KeyDelete("favoritos");
            }
            else
            {
                jsonCoches = JsonConvert.SerializeObject(favoritos);
                this.database.StringSet("favoritos", jsonCoches
                    , TimeSpan.FromMinutes(15));
            }
        }

    }
}

Resolveremos las dependencias en el Startup y añadiremos la funcionalidad para Cache Redis en el Controller:

Por último creamos las vistas.

Hecho todo lo anterior, ya tendríamos listo nuestro Cache Redis el cual podría ser consumido desde múltiples aplicaciones.

Miguel Rico Corrales.

Desarrollo Web Full Stack, MultiCloud y Multiplataforma.

Tajamar.

2021-2022

GitHub:

https://github.com/Miguelrc9991/PostGenerarExcel.git

Documentación:

https://azure.microsoft.com/es-es/services/cache/#features

Leave a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.