如何在多个节点上使用 memcached 正确删除 Ruby on Rails 项目上的缓存键?

问题描述 投票:0回答:1

我的 ROR 项目目前正在 AWS elasticached 上利用 memcached(3 个节点)来规避从数据库的读取。当尝试删除密钥时,Rails 或 Memcached 似乎通常只删除一个或几个节点上的密钥,因为从缓存中读取会返回过时的数据。

rails 或 memcached 上是否有任何配置可以阻止此操作或在节点上失败时重试密钥删除?

我的另一个选择是向 Rails 键添加版本号,如果没有更好的解决方案,我会这样做。

ruby-on-rails ruby memcached amazon-elasticache dalli
1个回答
0
投票

您查看过文档吗? Fragment CachingActiveSupport::Cache::MemCacheStore 的指南文档可能会涉及配置错误的内容。

Memcached 应该会自动删除旧的缓存文件,所以听起来你正在手动管理过期;根据您正在执行的操作,最好设置默认到期时间作为故障保护。您可能需要向缓存存储配置添加其他服务器或确保

MEMCACHE_SERVERS
正在更新(最好确保定义
MEMCACHE_SERVERS
,以便两个 Rails + Dalli::Client Server Configuration 都可以使用它作为保持服务器信息最新的共享事实来源)。 Memcached服务器之间是相互独立的,没有办法进行通信;他们依赖 Memcached 客户端向所有相关服务器发送并行请求,因此删除可能会以绕过客户端的方式发生。

© www.soinside.com 2019 - 2024. All rights reserved.