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 *

Salir de la versión móvil