La forma básica de obtener una conexión a Redis es instanciando directamente la clase Redis. Indicaremos el host y usaremos el puerto por defecto
$redis = new Redis();
$redis->connect("localhost");
Con set asignamos un valor a una clave y con get recuperamos el valor asociado a una clave.
Con mset asignamos una lista de pares clave-valor en una operación atómica. Con mget obtenemos el array de valores asociado a una lista de claves pasadas como un array.
Con del borramos una clave o lista de claves.
$redis->set("foo", "bar");
$value = $redis->get("foo");
echo $value . "</br>";
$redis->mset(array("a" => "10", "b" => "20", "c" => "30"));
$values= $redis->mget(array("a", "b", "c"));
foreach ($values as $v) {
echo $v . "</br>";
}
incr y decr incrementan o disminuyen en 1 el valor de la clave especificada.
incrby y decrby incrementan o disminuyen el valor de la clave especificada en el argumento proporcionado.
$redis->set("counter", "100");
$redis->incr("counter");
$redis->incrBy("counter", 9);
$redis->decrBy("counter", 4);
$counter = $redis->decr("counter");
incrByFloat permite incrementar o disminuir en un valor decimal.
append añade la cadena propocionada al final del valor de la clave especificada.
substr devuelve una cadena de la clave especificada comprendida entre dos posiciones.
strlen devuelve el número de caracteres del valor de la clave especificada.
$redis->set("greeting", "Hello ");
if ($redis->exists("greeting")) {
$redis->append("greeting", "World!");
}
echo $redis->substr("greeting", 6, -1) . "<br/>";
echo $redis->get("greeting") . "<br/>";
echo "Length: " + $redis->strlen("greeting") . "<br/>";
$redis->del("greeting");
Las listas son colecciones de valores que admiten repetidos.
lpush inserta al principio (izquierda) de la clave especificada el valor proporcionado. rpush inserta al final (derecha).
rpop extrae un valor del final (derecha) de la clave especificada.
linsert inserta en la clave especificada el valor proporcionado. El valor se inserta antes Redis::BEFORE o después Redis::AFTER del valor especificado (pivot).
lset establece en la clave especificada el valor proporcionado en la posición especificada.
$redis->del("sessions:ggvd");
$redis->lpush("sessions:ggvd", "10/3");
$redis->rpush("sessions:ggvd", "24/3");
$redis->rpush("sessions:ggvd", "25/3");
$redis->rpop("sessions:ggvd");
$redis->linsert("sessions:ggvd", Redis::BEFORE, "24/3", "17/3");
$redis->rpush("sessions:ggvd", "31/3");
$redis->lset("sessions:ggvd", -1, "7/4");
$values = $redis->lrange("sessions:ggvd", 0, -1);
foreach ($values as $v) {
echo $v . "</br>";
}
$redis->del("sessions:ggvd");
Los conjuntos son colecciones de valores que no admiten repetidos.
sadd añade a la clave especificada los elementos proporcionados.
sadd elimina de la clave especificada los elementos proporcionados.
sMembers devuelve todos los miembros del conjunto asociado a la clave especificada.
scard devuelve el número de elemetos del conjunto de la clave especificada.
$redis->del("students:ggvd");
$redis->sadd("students:ggvd", "student1", "student2", "student3");
$redis->srem("students:ggvd", "student3");
$students = $redis->sMembers("students:ggvd");
$numberOfStudents = $redis->scard("students:ggvd");
echo $numberOfStudents . "<br/>";
foreach ($students as $s) {
echo $s . "<br/>";
}
$redis->del("students:ggvd");
sunion, sinter y sdiff obtienen, respectivamente, la unión, intersección y diferencia de conjuntos.
$redis->del("students:ggvd");
$redis->sadd("students:ggvd", "student1", "student2", "student3");
$redis->sadd("students:bd", "student3", "student4", "student5");
$totalStudents = $redis->sunion("students:bd", "students:ggvd");
$commonStudents = $redis->sinter("students:bd", "students:ggvd");
$studentsOnlyInGGVD = $redis->sdiff("students:ggvd", "students:bd");
echo "Total students: " . "<br/>";
foreach ($totalStudents as $s) {
echo $s . "<br/>";
}
echo "Common students: " . "<br/>";
foreach ($commonStudents as $s) {
echo $s . "<br/>";
}
echo "Students only in GGVD: " . "<br/>";
foreach ($studentsOnlyInGGVD as $s) {
echo $s . "<br/>";
}
$redis->del("students:ggvd");
Los conjuntos ordenados son conjuntos cuyos elementos están acompañados de una puntuación que permite establecer un orden en el conjunto.
zadd añade a la clave especificada la puntuación y el elemento proporcionado.
zincrby añade el valor propocionado a la puntuación del elemento de la clave especificados.
zcount devuelve el número de elementos del conjunto que tienen su puntuación entre los límites propocionados
zRangeByScore devuelve los elementos del conjunto y clave especificados cuyas puntuaciones están en el rango proporcionado. Hay dos opciones disponibles pasadas dentro de un array:
withscores => TRUElimit => array($offset, $count)$redis->del("scores:ggvd");
$redis->zadd("scores:ggvd", 9, "student1");
$redis->zadd("scores:ggvd", 3, "student2");
$redis->zadd("scores:ggvd", 8, "student3");
$redis->zincrby("scores:ggvd", 1, "student2");
$numberOfPassStudents = $redis->zcount("scores:ggvd", 5, 10);
echo $numberOfPassStudents . "<br/>";
$passStudents = $redis->zRangeByScore("scores:ggvd", 5, 10, array('withscores' => TRUE));
echo "Pass Students<br/>";
foreach ($passStudents as $s) {
echo $s . "<br/>" ;
}
$redis->del("scores:ggvd");
Los hashes son listas de campo-valor asociados a una clave.
hset asigna a la clave especificada el campo y valor propocionados.
hget obtiene el valor asociado a la clave y campo especificados.
hkeys obtiene un array con la lista de campos de un clave.
echo "*** Hashes <br/>";
$redis->hset("profesor:mtorres", "email", "mtorres@ual.es");
$redis->hset("profesor:mtorres", "name", "Manuel");
$redis->hset("profesor:mtorres", "surname", "Torres Gil");
$redis->hset("profesor:mtorres", "twitter", "@ualmtorres");
$keys = $redis->hkeys("profesor:mtorres");
foreach ($keys as $k) {
echo $k . ": " . $redis->hget("profesor:mtorres", $k) . "<br/>";
}
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.echo "Transactions <br/>";
$t = $redis->multi();
$t->set("a", "1");
$t->set("b", "2");
$t->exec();
echo "After exec()<br/>";
echo "a: " . $redis->get("a") . "b: " . $redis->get("b") . "<br/>";
$t = $redis->multi();
$t->set("a", "3");
$t->set("b", "4");
$t->discard();
echo "After discard()<br/>";
echo "a: " . $redis->get("a") . "b: " . $redis->get("b") . "<br/>";