以下是关于 PHP 使用 Redis 的系统教程,涵盖常用扩展、连接方法、操作常用数据类型、性能优化与实战建议,适合 Laravel、ThinkPHP、WordPress 等各类 PHP 项目。


📚 目录

  1. PHP 操作 Redis 的方式
  2. 安装 Redis 扩展(phpredis)
  3. 使用 phpredis 扩展连接 Redis
  4. PHP 操作常见 Redis 数据类型
  5. Redis 配合 Laravel 使用
  6. Redis 配合 ThinkPHP 使用
  7. 性能建议与连接池
  8. 参考资料

1. PHP 操作 Redis 的方式

方法特点
phpredis(推荐)C 扩展,性能极高,主流框架支持
PredisPHP 原生实现,跨平台但性能略逊
Laravel Redis FacadeLaravel 对 phpredis/predis 的封装
Swoole Redis 协程客户端适合高并发协程服务器场景

2. 安装 Redis 扩展(phpredis)

Linux 环境下安装

sudo pecl install redis

添加到 php.ini

extension=redis

Windows 下使用:

下载 DLL:https://pecl.php.net/package/redis
放入 ext 目录,编辑 php.ini 启用:

extension=php_redis.dll

重启 Apache/Nginx + PHP-FPM 即可。


3. 使用 phpredis 扩展连接 Redis

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->auth('your_password'); // 如有密码
$redis->select(0); // 切换数据库

连接成功后即可开始操作 Redis。


4. PHP 操作常见 Redis 数据类型

字符串(String)

$redis->set("name", "Tom");
echo $redis->get("name");

哈希(Hash)

$redis->hSet("user:1000", "name", "Alice");
$redis->hSet("user:1000", "age", 25);
print_r($redis->hGetAll("user:1000"));

列表(List)

$redis->lPush("tasks", "task1");
$redis->rPush("tasks", "task2");
echo $redis->lPop("tasks");

集合(Set)

$redis->sAdd("tags", "php", "redis");
print_r($redis->sMembers("tags"));

有序集合(Sorted Set)

$redis->zAdd("scores", 100, "Alice");
$redis->zAdd("scores", 200, "Bob");
print_r($redis->zRange("scores", 0, -1, true));


5. Redis 配合 Laravel 使用

Laravel 默认集成 Redis 支持,无需额外安装。

.env 配置

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

使用示例

use Illuminate\Support\Facades\Redis;

Redis::set('site', '52kanjuqing.com');
$val = Redis::get('site');

支持多连接、缓存、队列、事件广播等高级特性。


6. Redis 配合 ThinkPHP 使用

安装 think-redis 扩展

composer require topthink/think-redis

配置

config/cache.php 设置:

'redis' => [
    'type'     => 'redis',
    'host'     => '127.0.0.1',
    'port'     => 6379,
    'password' => '',
    'select'   => 0,
],

使用示例

Cache::store('redis')->set('key', 'value');
$value = Cache::store('redis')->get('key');


7. 性能建议与连接池

  • 推荐使用长连接(pconnect) 避免频繁连接开销
  • 使用连接池(Laravel + Swoole 场景可用 Swoole Redis Pool)
  • 高并发下使用 Lua 脚本替代多命令事务操作,提升一致性和性能
  • 使用 Redis Sentinel 或 Cluster 实现高可用部署

8. 参考资料


如果你需要我帮你生成 Laravel 中 Redis 分布式锁、延迟队列、缓存自动刷新等完整代码模块,也可以告诉我,我可以直接写好项目片段给你。是否需要继续?