在 TP5 中使用 Redis

前面2篇文章已经介绍了如何在 Linux 下安装 Redis 和 配置 PHP 的 redis 扩展

完成以上内容后,接下来我们在 tp5 中链接使用 redis


不需要其他的设置 或 配置

直接在 controller 下

在 TP5 中使用 Redis

访问成功

在 TP5 中使用 Redis


以上则完成了最基础的调用。

此时,我们再使用别的语法设置参数,如:hset / hget

在 TP5 中使用 Redis

结果 报错:未定义方法名 hset()

在 TP5 中使用 Redis

 原因:我们可以找到我们引入进来的那个文件

在 TP5 中使用 Redis

在 TP5 中使用 Redis

我们可以看到这里有 set() 方法,所以我们第一个 redis 执行成功 输出了 : 法外狂徒张三

在 TP5 中使用 Redis

但是当我们搜索 hset() 方法时,显示的内容为空

在 TP5 中使用 Redis

所以我们无法执行 hset() 等指令

从 redis.php 文件中 我们也可以看到,我们可以直接执行的指令有:has() get() set() inc() dec() rm() clear() 这七个

但是我们要如何执行除了这七个指令外的其他指令呢?

使用 handler 方法

在 TP5 中使用 Redis

结果 不仅没有报错 并且成功输出出来了

在 TP5 中使用 Redis


也就是说 以这种方式 连接 redis ,如果想要执行那七个以外的方法,就需要使用 handler 方法

那我们再来分析下 handler 方法是啥

我们回到这个路径 use think\cache\driver\Redis 下的 redis.php 文件

很显然 这里面也没有定义handler 方法

但是我们可以看到 redis.php 引入了 另一个文件 

在 TP5 中使用 Redis

我们接着找到这个文件

在 TP5 中使用 Redis

可以看到在最后面 有一个 handler 的方法,并且注释了:可执行其他高级方法

在 TP5 中使用 Redis

至于底层的原因,本人才疏学浅,浅尝辄止,只能挖掘到这里了。


另外再补充一下

在 use think\cache\driver\Redis 这个目录下的 redis.php 中 我们可以看到

在 TP5 中使用 Redis

这里有一个 host 参数 ,值为:127.0.0.1

它对应的是服务器中 redis.conf 内的

在 TP5 中使用 Redis

在 TP5 中使用 Redis