Redis 客户端 for PHP: Predis — 安装、连接、示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Predis — 灵活的 Redis 客户端 for PHP



Redis 是一种高性能的键值存储数据库,常用于缓存、会话、队列和实时应用。为了在 PHP 中操作 Redis,有多种库可供选择,其中最流行的一种是 Predis。这是一个纯 PHP 实现的客户端,无需安装额外的扩展(与 phpredis 不同)。Predis 支持所有主要的 Redis 命令、集群、复制、Pub/Sub 以及事务操作。



通过 Composer 安装 Predis



安装 Predis 的标准方式是通过 Composer。请确保您的项目中已安装 Composer,然后执行以下命令:



composer require predis/predis


安装完成后,composer.json 文件中会添加依赖项,并且该库将位于 vendor 文件夹中。



连接到 Redis 服务器



首先,创建一个 Predis 客户端实例。默认情况下,它会连接到 127.0.0.1:6379,但您可以指定自己的参数。



<?phprequire 'vendor/autoload.php';

use Predis\\Client;

// 使用默认参数连接$client = new Client();

// 或者显式指定主机和端口$client = new Client([ 'scheme' => 'tcp', 'host' => '127.0.0.1', 'port' => 6379,]);

// 如果需要密码$client = new Client([ 'host' => 'localhost', 'port' => 6379, 'password' => 'my_secret_password',]);?>


如果 Redis 运行在远程服务器或使用 UNIX 套接字,只需更改相应的参数即可。



基本数据操作



Predis 支持所有标准的 Redis 数据类型:字符串、哈希、列表、集合和有序集合。我们来看一些基本示例。



字符串操作



<?php// 设置值$client->set('user:100:name', '伊万·彼得罗夫');

// 获取值$name = $client->get('user:100:name');echo $name; // 伊万·彼得罗夫

// 检查键是否存在if ($client->exists('user:100:name')) { echo '键存在';}

// 删除键$client->del(['user:100:name']);?>


哈希操作



哈希适合存储对象——例如用户数据。



<?php// 设置哈希字段$client->hmset('user:100', [    'name'  => '安娜·斯米尔诺娃',    'email' => 'anna@example.com',    'age'   => 28,]);

// 获取单个字段$email = $client->hget('user:100', 'email');

// 获取所有字段$userData = $client->hgetall('user:100');print_r($userData);

// 增加数字字段$client->hincrby('user:100', 'age', 1);?>


列表操作



Redis 列表非常适合用于队列和日志。



<?php// 在列表开头添加元素(栈)$client->lpush('tasks', 'task1', 'task2', 'task3');

// 在列表末尾添加元素(队列)$client->rpush('tasks', 'task4');

// 获取列表所有元素$allTasks = $client->lrange('tasks', 0, -1);print_r($allTasks);

// 弹出第一个元素$first = $client->lpop('tasks');echo $first; // task3?>


设置键的生存时间 (TTL)



Redis 的强大功能之一是可以在指定时间后自动删除键。这常用于缓存。



<?php// 设置键并指定 TTL 为 60 秒$client->setex('cache:page', 60, '页面的 HTML 内容');

// 或者为已存在的键设置 TTL$client->expire('cache:page', 120);

// 检查剩余生存时间$ttl = $client->ttl('cache:page');echo "剩余 $ttl 秒";?>


事务操作



Predis 支持多命令(事务

推荐