我的问题是我认为我无法从管理页面刷新 magento redis 缓存。我意识到问题可能来自许多来源,但我的直觉告诉我这与后端位于单独的服务器上有关。我的magento安装如下:
- Magento CE 1.8
- 位于http://admin.example.com的 Amazon AWS EC2 上的后端服务器和 NFS(媒体)
- AWS Elastic Beanstalk 上的 AWS RDS MySQL 2 应用程序服务器(可扩展至更多)上的数据库,网址为http://www.example.com (route53)
- AWS elasticache redis 上的常规后端缓存(数据库 0)、Lesti-FPC(数据库 0)和 redis_session(数据库 1)
我最初将我的 Lesti-FPC 配置为使用 redis 缓存上的数据库 2。据我所知,我认为它工作得很好,直到我意识到我根本无法从管理系统>缓存管理页面刷新缓存。“Flush Magento Cache”、“Flush Cache Storage”、“disable”和“refresh”什么也没做。我只能通过重新启动 redis 节点或使用 redis-cli 并使用 redis 命令来刷新它。
然后我尝试配置 Lesti-FPC 以使用如上所述的数据库 0。它工作得更好。现在,我可以使用“刷新缓存存储”来刷新 FPC,尽管其他选项仍然不起作用。当时,我认为这是 Lesti-FPC 特有的问题。但无论如何,当时使用“刷新缓存存储”对我来说已经足够了,尤其是当我发现我可以通过代码刷新缓存时
Mage::app()->getCacheInstance()->flush();
我最近才发现这个问题可能不是 Lesti-FPC 特有的。在尝试修复 Lesti 问题时,我尝试监控 redis。我对 redis 或缓存一无所知,但是当我尝试刷新 FPC 时,我会看到如下命令:
“del” “zc:ti:403_FPC”
“srem” “zc:tags” “403_FPC”
但这些标签从未存在过。正在做:
keys *FPC*
在 redis 中会给我
“zc:ti:109_FPC”
但没有 403。所以这意味着我的 fpc 缓存不会像在产品/类别更改和重新索引后那样失效。我通过在更改后手动刷新缓存并运行 cron 作业以每隔几个小时刷新和启动 fpc 来解决这个问题。
但这让我产生了怀疑。我尝试从管理员刷新其他缓存,我发现 magento 总是会尝试删除和读取 403 键(其中一些存在,而另一些不存在)但从来没有任何 109 键(其中有很多)。
我的猜测是 403 键特定于管理服务器,而 109 键特定于应用程序服务器。管理服务器,可能是因为它位于不同的子域上,没有触及应用服务器的缓存内容。但是应用程序服务器能够很好地找到自己的密钥,这可以从 FPC 运行良好的事实证明。
这有意义吗?我能做些什么来解决这个问题吗?我是否配置错误或者这是一个magento错误?