laravel-wechat 7.0设置redis缓存

EasyWeChat从6.0开始 SDK 不再内置具体 API 的逻辑,所有的 API 均交由开发者自行调用。
当项目由多台服务器组成时,需要将EasyWeChat的缓存驱动设置成redis缓存,以下就是我的解题思路和设置方法。

这是EasyWeChat获取access_token的方法
在这里插入图片描述
看了下源代码,代码地址 EasyWeChat\MiniApp\Application 中的 getAccessToken方法,如下图
在这里插入图片描述
发现有一个getCache方法,追逐这个方法,希望可以有帮助。
打开文件 EasyWeChat\Kernel\Traits\InteractWithCache 中的 getCache方法,
在这里插入图片描述
正好发现上面有个setCache方法,我们可以先假设这个是设置缓存驱动的方法,看看这个方法如何使用,研究下 CacheInterface 传参。
打开文件 Psr\SimpleCache\CacheInterface
在这里插入图片描述

正好发现有redis继承这个方法。
打开 Illuminate\Cache\RedisTaggedCache文件,在文件中无任何线索,那就追踪下在哪实例化这个文件的吧。

按住ctrl点文件名,出现了文件使用列表。大多数文件追踪都可以通过ctrl完成,没有ctrl的话,我可能什么都做不了了。
在这里插入图片描述
哎,又可以往下一步了打开 Illuminate\Cache\RedisStore文件中的 tag方法
有一段new RedisTaggedCache方法,那我们现在搞清楚 2个传参什么含义吧。
在这里插入图片描述
第一个参数 就是传入当前对象嘛,第二个参数我猜测是给缓存值起别名的功能(具体我也不清楚,主要想赶紧去更换缓存驱动)。

我们在看下第一个参数 RedisStore 对象是如何实例化的。

追踪到 Illuminate\Cache\CacheManager 中的 createRedisDriver方法中有使用到,好叻应该快结尾了。
在这里插入图片描述
发现传入了3个参数,第一个参数的话,对laravel熟悉的通知一定可以看出是从 容器中取出的redis对象,第二第三参数一看就知道是去 redis的配置,那配置的具体明细在 config\database中,那我们已经有个 实例 RedisStore方法,就可以实例化出了 RedisTaggedCache。
最终实现方法如下

		$config = \Config::get('easywechat.mini_app.default');
        $this->miniApp = new Application($config);
        $redis = \App::make('redis');
        $store            = new RedisStore($redis, config('cache.prefix'));
        $redisTaggedCache = new RedisTaggedCache($store, new TagSet($store, ['wechat']));
        $this->miniApp->setCache($redisTaggedCache);

希望对大家有帮助。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值