tp6用redis实现接口缓存只需三步:安装redis扩展并启用,配置cache.php中redis驱动及连接参数,使用cache门面(如cache::store('redis')->set())操作数据,支持键值、哈希、计数器等命令。

TP6 接口缓存用 Redis 实现,核心就三步:装好 Redis 扩展、配对 cache.php、用 Cache 门面操作数据。不依赖额外 SDK,原生支持,关键在配置准确和命令用对场景。
Redis 环境与 PHP 扩展准备
确保本地或服务器已运行 Redis 服务(如 redis-server.exe 或 systemctl start redis)。PHP 需启用 redis 扩展(非 predis,除非主动选用):
- Windows 下下载对应 PHP 版本的
php_redis.dll,放入ext/目录,并在php.ini中添加extension=php_redis.dll - Linux/macOS 可用
pecl install redis,然后在php.ini加extension=redis.so - 执行
phpinfo()确认 “redis” 模块已加载成功
TP6 中配置 Redis 缓存驱动
编辑 config/cache.php,重点配置两处:
Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。
- 把默认驱动设为
'default' => 'redis'(或通过.env设置CACHE_DRIVER=redis) - 在
'stores' => []中补充完整 Redis 连接项,例如:
'redis' => [<br> 'type' => 'redis',<br> 'host' => '127.0.0.1',<br> 'port' => 6379,<br> 'password' => '', // 有密码时填字符串,无则留空<br> 'select' => 0, // 数据库编号<br> 'timeout' => 0, // 连接超时,0 表示不限制<br> 'expire' => 3600, // 全局默认过期时间(秒),可被单次操作覆盖<br> 'prefix' => 'tp6:', // 可选,避免键名冲突<br>],
在接口中使用 Redis 缓存数据
推荐统一用 think\facade\Cache,它自动走配置好的 Redis 驱动:
- 简单键值缓存:
Cache::store('redis')->set('user:1001', ['name' => '张三'], 3600) - 读取:
$user = Cache::store('redis')->get('user:1001')(未命中返回false) - 带前缀快捷写法:
cache('user:1001', $data, 3600)—— 此方式自动使用默认 store - 哈希结构(适合对象字段缓存):
Cache::store('redis')->hSet('user:1001', 'email', 'zhang@example.com') - 计数器(如接口调用次数):
Cache::store('redis')->incr('api:login:count')
接口缓存的实用技巧
避免“缓存穿透”“缓存雪崩”,建议结合业务加一层控制:
- 查询数据库前先查缓存;未命中时,查库后写入缓存,并设随机过期时间(如
3600 + rand(1, 300)) - 敏感接口加锁机制:用
Cache::store('redis')->lock('lock:user:1001', 10)防并发重复写 - 列表类接口(如排行榜)优先用
zSet:用zAdd('rank:score', $score, $uid)+zRevRange('rank:score', 0, 99) - 调试时可用
Cache::store('redis')->ping()快速确认连接状态










