Cliente Redis para PHP: Predis — instalación, conexión, ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Predis — un cliente Redis flexible para PHP

\n\n

Redis es un almacén de datos de alto rendimiento de tipo «clave-valor», que se utiliza a menudo para almacenamiento en caché, sesiones, colas y aplicaciones en tiempo real. Para trabajar con Redis desde PHP existen varias bibliotecas, y una de las más populares es Predis. Esta es una implementación completamente en PHP del cliente, que no requiere la instalación de extensiones adicionales (a diferencia de phpredis). Predis admite todos los comandos principales de Redis, agrupación en clústeres, replicación, Pub/Sub y trabajo con transacciones.

\n\n

Instalación de Predis a través de Composer

\n\n

La instalación de Predis se realiza de forma estándar a través de Composer. Asegúrese de que Composer esté instalado en su proyecto y ejecute el comando:

\n\n
composer require predis/predis
\n\n

Después de la instalación, aparecerá una dependencia en el archivo composer.json y la biblioteca estará disponible en la carpeta vendor.

\n\n

Conexión al servidor Redis

\n\n

Para empezar, cree una instancia del cliente Predis. Por defecto, se conecta a 127.0.0.1:6379, pero puede especificar sus propios parámetros.

\n\n
<?php\nrequire 'vendor/autoload.php';\n\nuse Predis\\Client;\n\n// Conexión con parámetros por defecto\n$client = new Client();\n\n// O especificando explícitamente el host y el puerto\n$client = new Client([\n    'scheme' => 'tcp',\n    'host'   => '127.0.0.1',\n    'port'   => 6379,\n]);\n\n// Si se requiere contraseña\n$client = new Client([\n    'host' => 'localhost',\n    'port' => 6379,\n    'password' => 'my_secret_password',\n]);\n?>
\n\n

Si Redis se ejecuta en un servidor remoto o utiliza un socket UNIX, simplemente cambie los parámetros correspondientes.

\n\n

Operaciones básicas con datos

\n\n

Predis admite todos los tipos de datos estándar de Redis: cadenas, hashes, listas, conjuntos y conjuntos ordenados. Veamos ejemplos básicos.

\n\n

Trabajo con cadenas

\n\n
<?php\n// Establecer un valor\n$client->set('user:100:name', 'Iván Petrov');\n\n// Obtener un valor\n$name = $client->get('user:100:name');\necho $name; // Iván Petrov\n\n// Verificar la existencia de una clave\nif ($client->exists('user:100:name')) {\n    echo 'La clave existe';\n}\n\n// Eliminar una clave\n$client->del(['user:100:name']);\n?>
\n\n

Trabajo con hashes

\n\n

Los hashes son convenientes para almacenar objetos — por ejemplo, datos de usuario.

\n\n
<?php\n// Establecer campos de un hash\n$client->hmset('user:100', [\n    'name'  => 'Ana Smirnova',\n    'email' => 'anna@example.com',\n    'age'   => 28,\n]);\n\n// Obtener un campo\n$email = $client->hget('user:100', 'email');\n\n// Obtener todos los campos\n$userData = $client->hgetall('user:100');\nprint_r($userData);\n\n// Incrementar un campo numérico\n$client->hincrby('user:100', 'age', 1);\n?>
\n\n

Trabajo con listas

\n\n

Las listas de Redis son ideales para colas y registros.

\n\n
<?php\n// Agregar elementos al inicio de la lista (pila)\n$client->lpush('tasks', 'task1', 'task2', 'task3');\n\n// Agregar al final de la lista (cola)\n$client->rpush('tasks', 'task4');\n\n// Obtener todos los elementos de la lista\n$allTasks = $client->lrange('tasks', 0, -1);\nprint_r($allTasks);\n\n// Extraer el primer elemento\n$first = $client->lpop('tasks');\necho $first; // task3\n?>
\n\n

Establecer el tiempo de vida de una clave (TTL)

\n\n

Una de las potentes capacidades de Redis es la eliminación automática de claves después de un tiempo determinado. Esto se usa a menudo para el almacenamiento en caché.

\n\n
<?php\n// Establecer una clave con TTL de 60 segundos\n$client->setex('cache:page', 60, 'Contenido HTML de la página');\n\n// O para una clave ya existente\n$client->expire('cache:page', 120);\n\n// Verificar el tiempo de vida restante\n$ttl = $client->ttl('cache:page');\necho "Quedan $ttl segundos";\n?>
\n\n

Trabajo con transacciones

\n\n

Predis admite multi-comandos (trans

Recommendations