设置Redis服务

Redis是一个可选的后端缓存解决方案,它取代了Adobe Commerce默认使用的Zend Framework Zend_Cache_Backend_File

IMPORTANT
Adobe Commerce 2.4.9或更高版本的2.4.5-p16、2.4.6-p14、2.4.7-p9和2.4.8-p4修补程序不支持Redis缓存。 对于不支持Redis的缓存配置,请使用Valkey。 按版本查看支持的缓存服务的系统要求

请按照以下说明在专业集成环境和入门环境(包括master分支)上进行服务设置。

NOTE
要更改Pro生产和暂存环境中的服务配置,请提交Adobe Commerce支持票证。 有关计划要求和客户可用性指导,请参阅​_配置服务_​中的专业服务支持

启用Redis

要启用Redis,请更新以下文件:

  • .magento/services.yaml
  • .magento.app.yaml

配置服务

.magento/services.yaml中,添加Redis服务定义。 将<version>替换为您的Adobe Commerce版本和当前Cloud模板支持的Redis版本。

cache:
  type: redis:<version>

例如,对于支持Redis 7.2的Commerce版本和Cloud模板:

cache:
  type: redis:7.2

示例版本不是通用的。 实际的默认服务版本和支持的服务版本取决于您的Adobe Commerce版本、修补程序级别和当前的Cloud模板。 验证系统要求和当前项目模板中支持的组合。

配置服务关系

.magento.app.yaml中,配置应用程序与Redis服务之间的关系:

runtime:
  extensions:
    - redis

relationships:
  redis: "cache:redis"

关系键redis是应用程序用于访问服务的名称。 值cache:redis包含在.magento/services.yaml中定义的服务ID (cache)和服务类型(redis)。

提交并部署更改

添加、提交和推送配置更改:

git add .magento/services.yaml .magento.app.yaml
git commit -m "Enable Redis service"
git push origin <branch-name>

部署完成后,验证Redis服务关系是否可用。

TIP
在初始服务设置之后,您可以通过更新services.yaml.magento.app.yaml配置文件来更改已安装服务的软件版本。 有关升级或降级服务的指导,请参阅更改服务版本。 此自助方法不适用于Pro暂存或生产环境 — 请参阅​_配置服务_​中的Pro服务支持

验证服务关系

部署配置后,从应用程序容器中运行以下命令以显示已解码的MAGENTO_CLOUD_RELATIONSHIPS对象:

使用SSH连接到远程云环境,然后运行:

echo "$MAGENTO_CLOUD_RELATIONSHIPS" | base64 -d | json_pp

该命令显示所有已配置的服务关系。 找到redis关系以标识Redis连接详细信息。

以下缩写示例显示了redis关系。 它不是一个通用的架构。

{
   "database" : [
      {
         "host" : "database.internal",
         "port" : 3306,
         "path" : "main",
         "scheme" : "mysql"
      }
   ],
   "opensearch" : [
      {
         "host" : "opensearch.internal",
         "port" : 9200,
         "path" : null,
         "scheme" : "http"
      }
   ],
   "redis" : [
      {
         "host" : "redis.internal",
         "port" : 6379,
         "path" : null,
         "scheme" : "redis"
      }
   ]
}

输出因环境和服务配置而异。 请勿对此示例中的主机名、端口、IP地址、群集名称、服务版本、用户名或密码进行硬编码。 在目标环境中使用MAGENTO_CLOUD_RELATIONSHIPS返回的值。

如果jq可用,请使用以下命令仅显示Redis关系:

printf '%s' "$MAGENTO_CLOUD_RELATIONSHIPS" \
  | base64 -d \
  | jq '{redis: .redis}'

有关服务关系的详细信息,请参阅配置服务

自定义Redis配置

有关缓存、会话、L2和副本连接建议,请参阅​ 实施行动手册最佳实践指南 ​中的Valkey和Redis服务配置的最佳实践

使用Redis CLI

假定您的Redis关系名为redis,请使用MAGENTO_CLOUD_RELATIONSHIPS返回的主机和端口连接到Redis。

在安装和配置Redis的情况下连接到环境,并运行以下命令:

redis-cli -h <host> -p <port>

示例

redis-cli -h redis.internal -p 6379

获取已安装的Redis版本

集成环境

在集成环境中,使用redis关系返回的主机和端口运行:

code language-terminal
redis-cli -h <host> -p <port> info | grep version

示例响应

code language-text
redis_version:<installed-version>
gcc_version:<gcc-version>

版本和内部版本详细信息因环境而异。 请勿将显示的示例版本视为必需或通用服务版本。

专业暂存和生产

在专业暂存和生产环境中,运行:

code language-terminal
redis-server -v

示例响应

code language-text
Redis server v=<installed-version> ...

版本和内部版本详细信息因环境而异。 请勿将显示的示例版本视为必需或通用服务版本。

Redis疑难解答

请参阅以下Adobe Commerce支持文章,以获取有关Redis问题疑难解答的帮助:

Cache-clean错误引用Valkey配置的缓存上的Redis

预部署缓存清理失败可能会显示错误代码[107] (clean-redis-cache)和Connection to Redis消息,即使cache服务配置为Valkey也是如此。 ece-tools使用此旧版面向Redis的错误代码和消息执行缓存清理步骤,而不管哪个服务支持cache关系,因此措辞不表示Redis已安装。

如果基础错误是DNS故障(如关系主机的Name or service not known),则部署步骤在服务关系可用之前运行,或者.magento.app.yaml中的关系名称与.magento/services.yaml中的服务ID不匹配。 请参阅验证服务关系

recommendation-more-help
commerce-on-cloud-help-cloud-guide