webman框架中使用thinkorm后查询缓存没法使用

linkphp

截图

Db::table('user')->cache(60)->find();
这样调用后发现没有生成缓存文件?

3241 5 0
5个回答

weijer

跟你昨天一样问题啊!!!!

  • linkphp 2021-02-25

    好像是的。。。不知道咋整缓存驱动

  • linkphp 2021-02-25

    大佬有微信吗 加你一下 哈哈

小阳光

thinkorm的文档上有写,要用缓存必须要有缓存驱动并设置。自己写或者去github上找一个符合psr规范的缓存驱动即可。

  • 小阳光 2021-02-25
    Db::setCache(Container::get(RedisAdapter::class));
weijer

直接用用这个组件 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);
}

  • weijer 2021-02-26

    还有点问题 Illuminate\Cache 不符合 PSR-16 规范得适配下

  • weijer 2021-02-26

    可以用 symfony/cache 做桥接

  • linkphp 2021-02-26

    好像可以用think-cache 但是不知道怎么配置

  • linkphp 2021-02-26

    @7457:大佬您有qq或者微信吗 我加一下 请请教一下

  • weijer 2021-03-01

    "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);
    }
    }

  • linkphp 2021-03-12

    这个文件放哪里

  • linkphp 2021-03-12

    @7457:大佬 我按照你这样加进去了,但是报错了

  • linkphp 2021-03-12

    @7457:报错截图在下面 大佬你看下 这个咋回事

  • linkphp 2021-03-12

    @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

  • linkphp 2021-03-12

    @7457:按照您这个办法,查询缓存是可以了,但是字段缓存好像不行

  • 1619443919 2021-03-17

    tporm你设置的缓存类型是什么就是哪种形式,不是一定要生成字段缓存文件

linkphp

截图

  • weijer 2021-03-12

    tp-orm 的问题,给他们提pr了

  • linkphp 2021-03-13

    "Cache key \"think:lanjinghai.yh_user|1\" contains reserved characters \"{}()\

  • linkphp 2021-03-13

    @7457:又报错了。。这也是bug么

  • weijer 2021-03-15

    同一个问题哈

  • linkphp 2021-03-15

    @7457:我发现就是那个save方法报错的,如果save方法指定where条件主键 就没问题了

  • 1619443919 2021-03-17

    直接改下symfony的cache源码即可啊,{}()/\@:,删除了@和:即可

  • 1619443919 2021-03-17

    翻了源码,他禁止key里含有{}()/\@:,但是tp的字段缓存key会有@和:,或者不弄symfony,可以考虑别的psr16

  • linkphp 2021-03-18

    @1619443919:哪个文件。。。

  • linkphp 2021-03-18

    @1619443919:别的不知道咋搞 tp-cache能用么 能不能写个demo

linkphp

截图

找到方法了 修改这个文件 就好了 谢谢大佬们

年代过于久远,无法发表回答
🔝