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