💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
# [扩展thinkphp5的redis类方法](https://www.cnblogs.com/yxhblogs/p/7224739.html) 笔者在开发时发现,thinkphp5的自带redis类方法,只有简单的读取缓存、写入缓存的基本方法,远不能满足我们业务的需求。redis本身支持五种数据类型,string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)。redis的东西就不必再介绍了,接下来还是让我一起扩展thinkphp5的redis方法吧! 首先我们先找到缓存驱动类里的,handler()方法,这个方法是返回Redis类的实例化对象的。 [![](https://images2015.cnblogs.com/blog/737276/201707/737276-20170723141930215-1680425639.png)](https://images2015.cnblogs.com/blog/737276/201707/737276-20170723141930215-1680425639.png) 这就是实例化对象,包括了options配置项、handler资源句柄、tag标签。实际上这里的handler是new Redis()的对象实例。只要在外部拿到handler资源句柄,则可以对redis的操作进行扩展了。 [![](https://images2015.cnblogs.com/blog/737276/201707/737276-20170723142227090-569616446.png)](https://images2015.cnblogs.com/blog/737276/201707/737276-20170723142227090-569616446.png) 在cache类里新增一个getHandler方法。 [![](https://images2015.cnblogs.com/blog/737276/201707/737276-20170723150915049-1682468122.png)](https://images2015.cnblogs.com/blog/737276/201707/737276-20170723150915049-1682468122.png) 然后我们就可以在控制器调用了 [![](https://images2015.cnblogs.com/blog/737276/201707/737276-20170723143101887-2007089861.png)](https://images2015.cnblogs.com/blog/737276/201707/737276-20170723143101887-2007089861.png) 打印的就是这个redis对象了 [![](https://images2015.cnblogs.com/blog/737276/201707/737276-20170723143122340-1567907048.png)](https://images2015.cnblogs.com/blog/737276/201707/737276-20170723143122340-1567907048.png) 这里需要注意的是: 一个是调thinkphp5的redis的方法,就是这样用。 [![](https://images2015.cnblogs.com/blog/737276/201707/737276-20170723143355700-1220178696.png)](https://images2015.cnblogs.com/blog/737276/201707/737276-20170723143355700-1220178696.png) 一个是如果你要调用原生的redis方法 [![](https://images2015.cnblogs.com/blog/737276/201707/737276-20170723143619934-222086222.png)](https://images2015.cnblogs.com/blog/737276/201707/737276-20170723143619934-222086222.png) 基本的用法都讲完了。 接下来就愉快的开始扩展redis方法吧。 先找到这个类 [![](https://images2015.cnblogs.com/blog/737276/201707/737276-20170723144234309-258276176.png)](https://images2015.cnblogs.com/blog/737276/201707/737276-20170723144234309-258276176.png) 这个类里并没有list的相关操作方法,那我们就来扩展list的相关方法。 这里的话,我就举一个例子了。 [![](https://images2015.cnblogs.com/blog/737276/201707/737276-20170723150654127-1043868794.png)](https://images2015.cnblogs.com/blog/737276/201707/737276-20170723150654127-1043868794.png) 在控制器里去调用 [![](https://images2015.cnblogs.com/blog/737276/201707/737276-20170723150746159-812626459.png)](https://images2015.cnblogs.com/blog/737276/201707/737276-20170723150746159-812626459.png) 这样就写入成功了。 [![](https://images2015.cnblogs.com/blog/737276/201707/737276-20170723150758909-2099734872.png)](https://images2015.cnblogs.com/blog/737276/201707/737276-20170723150758909-2099734872.png)