09. Redis manejo de transacciones en PHP

09.- Redis manejo de transacciones en PHP?

Las transacciones se inician con multi(). En Redis hay dos modos transaccionales:

REDIS:MULTI: El bloque de instrucciones se ejecuta como una única transacción. Este es el valor predeterminado.
REDIS:PIPELINE: El bloque de instrucciones se transmite más rápido al servidor, pero sin que quede garantizada la atomicidad.
Para finalizar la transacción usaremos:
exec(): ejecuta las instrucciones de una transacción.
discard(): cancela las instrucciones de una transacción.

<?php
/*
TRANSACTIONS
Las transacciones se inician con multi(). En Redis hay dos modos transaccionales:

REDIS:MULTI: El bloque de instrucciones se ejecuta como una única transacción. Este es el valor predeterminado.
REDIS:PIPELINE: El bloque de instrucciones se transmite más rápido al servidor, pero sin que quede garantizada la atomicidad.
Para finalizar la transacción usaremos:

exec(): ejecuta las instrucciones de una transacción.
discard(): cancela las instrucciones de una transacción.
*/
//Creamos la instancia de redis
$redis = new Redis();
//Nos conectamos a redis
$conn = $redis->connect('127.0.0.1', 6379);
//Si la conexion fue exitosa mostramos este texto
if ($conn) {
    echo "Conexion exitosa: estas conectado a Redis...<br/>";
}
//Si la conexion no fue exitosa mostramos este texto y nos salimos
else {
    echo "No se pudo conectar con la base de datos de Redis :(";
    exit();
}
//Inicializamos la transaccion
$tran1 = $redis->multi();
//Agregamos a la transaccion 2 llaves con sus respectivos valores
$tran1->set("a", "1");
$tran1->set("b", "2");
//Ejecutamos la transaccion
$tran1->exec();
//Mostramos los resultados despues de la transaccion
echo "<br/><strong>Despues de hacer exec()</strong><br/>";
echo "a:" . $redis->get("a") . " b:" . $redis->get("b") . "<br/><br/>";


$tran2 = $redis->multi();
$tran2->set("a", "3");
$tran2->set("b", "4");
//Desacarta la actual transaccion y deja los datos previos a la transaccion actual
$tran2->discard();
//Mostramos los resultados despues de discard
echo "<strong>Despues de hacer discard()</strong><br/>";
echo "a:" . $redis->get("a") . " b:" . $redis->get("b") . "<br/>";

En mi caso esta es la url donde puedo ver el resultado
http://localhost/redis4/transaccion.php

Deja un comentario

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

Información básica sobre protección de datos Ver más

  • Responsable: Eugenio Chaparro.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a digitalocean.com que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad
Salir de la versión móvil