如何用ThinkPHP结合Redis实现秒杀场景实战学习?
摘要:Redis + ThinkPHP 实战学习手册(含秒杀场景) 目录 基础准备:ThinkPHP 集成 Redis Redis 核心数据结构(ThinkPHP 用法) 秒杀场景核心:Redis 原子性与事务 ThinkPHP
Redis + ThinkPHP 实战学习手册(含秒杀场景)
目录
基础准备:ThinkPHP 集成 Redis
Redis 核心数据结构(ThinkPHP 用法)
秒杀场景核心:Redis 原子性与事务
ThinkPHP + Redis 实战场景(秒杀 / 缓存 / 限流)
常见问题与面试避坑
一、基础准备:ThinkPHP 集成 Redis
1.1 环境要求
ThinkPHP 5.1+/6.0+(推荐 6.0+,缓存扩展更完善)
PHP Redis 扩展(php_redis.dll,需在 php.ini 中启用)
Redis 服务(本地 / 服务器部署,默认端口 6379)
1.2 配置 Redis(ThinkPHP)
步骤 1:修改配置文件
在 config/cache.php 中配置 Redis 缓存驱动:
return [
// 默认缓存驱动
'default' => env('cache.driver', 'redis'),
// 缓存连接配置
'stores' => [
'redis' => [
'type' => 'redis',
'host' => env('redis.host', '127.0.0.1'),
'port' => env('redis.port', 6379),
'password' => env('redis.password', ''), // 无密码留空
'select' => env('redis.select', 0), // 数据库索引(0-15)
'timeout' => 0, // 超时时间
'persistent' => false, // 是否长连接
'prefix' => 'tp_seckill_', // 缓存前缀(避免键名冲突)
],
],
];
步骤 2:环境变量配置(.env 文件)
在项目根目录 .env 中添加 Redis 配置(可选,优先级更高):
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_SELECT=0
步骤 3:测试连接
在 ThinkPHP 控制器中测试 Redis 是否可用:
namespace app\controller;
use think\facade\Cache;
class RedisTest
{
public function test()
{
// 写入缓存
Cache::set('test_key', 'hello redis', 3600); // 有效期1小时
// 读取缓存
$value = Cache::get('test_key');
echo $value; // 输出:hello redis
// 直接操作 Redis 原生方法(获取 Redis 句柄)
$redis = Cache::store('redis')->handler();
$redis->set('native_key', '原生方法测试');
echo $redis->get('native_key'); // 输出:原生方法测试
}
}
二、Redis 核心数据结构(ThinkPHP 用法)
Redis 5 种核心数据结构,对应 ThinkPHP 缓存操作,重点掌握秒杀常用的 String Hash List。
