use Illuminate\Cache\RedisStore;
use support\bootstrap\Redis;
// 进程启动时调用
public static function start($worker)
{
Db::setConfig(config('thinkorm'));
$cache = new RedisStore(Redis::$_manager); // 注意把 $_manager 改成 public
Db::setCache($cache);
}
use Webman\Bootstrap;
use think\facade\Db;
use support\bootstrap\Redis;
use Symfony\Component\Cache\Adapter\RedisAdapter;
use Symfony\Component\Cache\Psr16Cache;
class Thinkphp implements Bootstrap
{
// 进程启动时调用
public static function start($worker)
{
Db::setConfig(config('thinkorm'));
$adapter = new RedisAdapter(Redis::connection()->client());
$pool = new Psr16Cache($adapter);
Db::setCache($pool);
}
}
跟你昨天一样问题啊!!!!
好像是的。。。不知道咋整缓存驱动
大佬有微信吗 加你一下 哈哈
thinkorm的文档上有写,要用缓存必须要有缓存驱动并设置。自己写或者去github上找一个符合psr规范的缓存驱动即可。
直接用用这个组件 Illuminate\Cache
在 support\bootstrap\db\Thinkphp.php
use Illuminate\Cache\RedisStore;
use support\bootstrap\Redis;
// 进程启动时调用
public static function start($worker)
{
Db::setConfig(config('thinkorm'));
$cache = new RedisStore(Redis::$_manager); // 注意把 $_manager 改成 public
Db::setCache($cache);
}
还有点问题 Illuminate\Cache 不符合 PSR-16 规范得适配下
可以用 symfony/cache 做桥接
好像可以用think-cache 但是不知道怎么配置
@7457:大佬您有qq或者微信吗 我加一下 请请教一下
"symfony/cache": "^5.2"
<?php
namespace support\bootstrap\db;
use Webman\Bootstrap;
use think\facade\Db;
use support\bootstrap\Redis;
use Symfony\Component\Cache\Adapter\RedisAdapter;
use Symfony\Component\Cache\Psr16Cache;
class Thinkphp implements Bootstrap
{
// 进程启动时调用
public static function start($worker)
{
Db::setConfig(config('thinkorm'));
$adapter = new RedisAdapter(Redis::connection()->client());
$pool = new Psr16Cache($adapter);
Db::setCache($pool);
}
}
这个文件放哪里
@7457:大佬 我按照你这样加进去了,但是报错了
@7457:报错截图在下面 大佬你看下 这个咋回事
@7457:Symfony\Component\Cache\Exception\InvalidArgumentException: Cache key "127.0.0.1:3306@lanjinghai.yh_user" contains reserved characters "{}()/\@:". in /www/wwwroot/lanjinghai/vendor/symfony/cache/CacheItem.php:167
@7457:按照您这个办法,查询缓存是可以了,但是字段缓存好像不行
tporm你设置的缓存类型是什么就是哪种形式,不是一定要生成字段缓存文件
tp-orm 的问题,给他们提pr了
"Cache key \"think:lanjinghai.yh_user|1\" contains reserved characters \"{}()\
@7457:又报错了。。这也是bug么
同一个问题哈
@7457:我发现就是那个save方法报错的,如果save方法指定where条件主键 就没问题了
直接改下symfony的cache源码即可啊,{}()/\@:,删除了@和:即可
翻了源码,他禁止key里含有{}()/\@:,但是tp的字段缓存key会有@和:,或者不弄symfony,可以考虑别的psr16
@1619443919:哪个文件。。。
@1619443919:别的不知道咋搞 tp-cache能用么 能不能写个demo
找到方法了 修改这个文件 就好了 谢谢大佬们
是 tp-orm 自己不规范
https://github.com/top-think/think-orm/pull/247