以下是关于 PHP 使用 Redis 的系统教程,涵盖常用扩展、连接方法、操作常用数据类型、性能优化与实战建议,适合 Laravel、ThinkPHP、WordPress 等各类 PHP 项目。
📚 目录
- PHP 操作 Redis 的方式
- 安装 Redis 扩展(phpredis)
- 使用 phpredis 扩展连接 Redis
- PHP 操作常见 Redis 数据类型
- Redis 配合 Laravel 使用
- Redis 配合 ThinkPHP 使用
- 性能建议与连接池
- 参考资料
1. PHP 操作 Redis 的方式
方法 | 特点 |
---|---|
phpredis(推荐) | C 扩展,性能极高,主流框架支持 |
Predis | PHP 原生实现,跨平台但性能略逊 |
Laravel Redis Facade | Laravel 对 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 分布式锁、延迟队列、缓存自动刷新等完整代码模块,也可以告诉我,我可以直接写好项目片段给你。是否需要继续?
发表回复