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 支持多命令(事务