You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Symfony 6如何启用Doctrine DBAL Cache Adapter作为缓存池及相关疑问

问题

我想把Doctrine DBAL Cache Adapter作为其他缓存方案的降级缓存(fallback),用来存储外部数据,而非Doctrine数据库查询结果。查阅官方文档后没找到以下问题的答案:

  • 是否需要手动创建缓存表?还是会自动创建?
  • 是否需要指定表名?有没有标准表名?
  • 如何传入默认数据库连接?

目前我已经在现有缓存配置中添加了相关配置(如下YAML代码),也完成了代码中数据的存储与读取逻辑,但没找到适配Symfony 6的最新配置示例,只找到Symfony 3等旧版本的PDO缓存示例。

配置代码:

framework:
  cache:
    system: cache.adapter.filesystem
    app: cache.adapter.filesystem
    pools:
      cache.sap:
        adapter: cache.adapter.filesystem
      cache.pers:
        adapter: cache.adapter.filesystem
      cache.db: # <-- 这是新增的配置
        adapter: app.cache.adapter.db_cache

services:
  app.cache.adapter.db_cache:
    parent: 'cache.adapter.doctrine_dbal'
    tags:
      - { name: 'cache.pool', namespace: 'sapData', default_lifetime: '0' }
回答

1. 缓存表的创建

Doctrine DBAL Cache Adapter不会自动创建缓存表,需要手动创建。官方推荐的通用表结构(以MySQL为例,可根据数据库类型调整字段类型):

CREATE TABLE cache_items (
  id VARCHAR(255) NOT NULL PRIMARY KEY,
  data LONGBLOB NOT NULL,
  lifetime INT DEFAULT NULL,
  created_at INT NOT NULL
);

2. 表名与标准命名

  • 可以指定表名,若不指定,默认使用cache_items,这是官方定义的标准表名。
  • 自定义表名需在服务配置中传入$tableName参数:
services:
  app.cache.adapter.db_cache:
    parent: 'cache.adapter.doctrine_dbal'
    arguments:
      $tableName: 'my_custom_cache_table' # 替换为你的自定义表名
    tags:
      - { name: 'cache.pool', namespace: 'sapData', default_lifetime: '0' }

3. 传入默认数据库连接

默认情况下,cache.adapter.doctrine_dbal会自动使用Symfony的默认数据库连接(即doctrine.dbal.default_connection)。若项目有多个数据库连接,需显式指定:

services:
  app.cache.adapter.db_cache:
    parent: 'cache.adapter.doctrine_dbal'
    arguments:
      $connection: '@doctrine.dbal.default_connection' # 指定默认连接
    tags:
      - { name: 'cache.pool', namespace: 'sapData', default_lifetime: '0' }

配置优化建议

你的现有配置已可正常工作,可补充连接和表名的显式配置让逻辑更清晰。另外注意default_lifetime: 0表示缓存永不过期,请确认这符合你的业务需求。

内容的提问来源于stack exchange,提问作者Calamity Jane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 13:47:23