ThinkPHP5里怎么搞定Redis连接和基本操作,tp5用redis的那些事儿
- 问答
- 2026-01-17 03:37:28
- 2
在ThinkPHP5(简称TP5)里用Redis,其实就像是给你的应用请了一个速度超快的“临时工”,专门负责处理那些频繁、简单但又不想每次都麻烦数据库的活儿,下面我就把在TP5里怎么请这个“临时工”来干活儿的事儿说清楚。
先把Redis“请进门”:配置连接
你得告诉TP5,你要用Redis,并且Redis住在哪里,这个信息都写在项目的配置文件里,根据TP5官方手册(ThinkPHP5完全开发手册)的说明,配置文件通常是 application/config.php 或者更好的是在 application/database.php 里。
- 找对配置文件:推荐在
database.php里配置,因为Redis也被看作是一种“数据库”,你打开这个文件,会看到一个叫cache的配置项,里面可以设置Redis。 - 填写连接信息:你需要告诉TP5以下几件事:
type: 驱动类型,这里固定写成'redis'。host: Redis服务器的IP地址,如果就在你本机,写0.0.1就行。port: Redis的端口号,默认是6379。password: 如果你的Redis设置了密码,就在这里填上,没设置就留空 。select: Redis有0-15一共16个数据库,默认用第0个,如果你想用别的,比如第1个,就写1。timeout: 连接超时时间,单位是秒,一般设个15或30就行。
配置好的样子大概是这样(参考TP5官方文档中关于缓存配置的部分):
// application/database.php 文件中的一部分
'cache' => [
// 驱动方式
'type' => 'redis',
// 服务器地址
'host' => '127.0.0.1',
// 端口
'port' => 6379,
// 密码
'password' => '',
// 数据库号
'select' => 0,
// 超时时间
'timeout' => 15,
],
这样,连接就配置好了,TP5在需要的时候,就会根据这个“地址簿”去找到并连接你的Redis服务。
让Redis开始“干活儿”:基本操作
配置好之后,你就可以在控制器(Controller)或者模型(Model)里使用Redis了,TP5通过一个叫 Cache 的类(门面类)来统一操作缓存,由于我们配置的驱动是Redis,所以这些操作自然就落到Redis头上了。
-
存数据(写操作)
- 最简单的存:
Cache::set('名字', '值');。Cache::set('user_name', '张三');就把“张三”这个值用“user_name”这个键存起来了。 - 存的时候加个有效期:比如让这个数据30秒后自动消失
Cache::set('temp_data', '一些临时内容', 30);。 - 如果不存在才存:
Cache::set('lock', '1');是不管有没有都存,而Cache::set('lock', '1');会先检查‘lock’存不存在,只有不存在的时候才存进去,这个在做一些防止重复的操作时很有用。
- 最简单的存:
-
取数据(读操作)
- 直接取:
$value = Cache::get('user_name');,这样就把刚才存的‘张三’取出来赋值给$value变量了。 - 取不到给个默认值:
$value = Cache::get('不存在的键', '这是默认值');如果键不存在,就不会返回null,而是返回‘这是默认值’。
- 直接取:
-
删数据(删操作)
- 删除一个:
Cache::rm('user_name');就把‘user_name’这个键值对从Redis里删掉了。 - 清空整个Redis数据库:
Cache::clear();这个要非常小心! 它会把你当前选的这个Redis数据库(比如刚才配置的select => 0)里的所有数据都删掉,只在测试或者明确需要时才用。
- 删除一个:
-
判断数据是否存在
$has = Cache::has('user_name');它会返回一个布尔值(true或false),告诉你这个键是否存在。
-
其他常见操作
- 自增:常用于计数,比如文章阅读量。
Cache::inc('read_count');会让‘read_count’的值加1,你还可以指定步长,比如一次加5:Cache::inc('score', 5);。 - 自减:和自增相反,
Cache::dec('stock');让值减1。
- 自增:常用于计数,比如文章阅读量。
有时候需要“直接对话”:使用原生Redis命令
虽然 Cache 类很方便,但它主要封装的是缓存相关的通用操作,有时候你需要用一些Redis更高级的命令,比如操作列表(list)、集合(set)、哈希(hash)等,这时候就需要直接调用Redis的原生方法。
TP5官方文档在“缓存”和“Redis驱动”章节提到,你可以通过以下方式获取到原生的Redis对象:
// 获取Redis对象
$redis = Cache::connect()->handler();
// 或者另一种方式(取决于TP5版本)
// $redis = Cache::store('cache驱动名')->handler();
// 然后你就可以像使用原生PHP Redis扩展一样来操作了
$redis->lPush('my_list', 'item1'); // 向左推入一个列表元素
$redis->hSet('my_hash', 'field1', 'value1'); // 设置一个哈希表的字段
$data = $redis->zRange('my_sorted_set', 0, -1); // 获取有序集合的所有成员
这个 $redis 对象就是PHP的Redis扩展实例,所有Redis支持的命令你基本都能用。
总结一下
在TP5里用Redis,三步走:首先是配置连接信息,告诉框架Redis在哪儿;然后是使用 Cache 类进行基本的缓存操作(set, get, rm等),这能满足大部分简单场景;最后如果不够用,就获取原生Redis对象进行高级操作,Redis再快,它也是和数据库不同的东西,一般用来缓存计算结果、会话管理、队列等,真正需要持久化、关系复杂的数据还是要靠MySQL这类数据库。

本文由钊智敏于2026-01-17发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:http://waw.haoid.cn/wenda/82175.html
