4

我使用 memcached 作为我的 NHibernate 二级缓存。我正在将我的系统迁移到 Amazon Web Services,并计划使用与 Memcache 完全兼容的 Elasticache。Memcached 使用一组主机 IP 地址(注意:不是主机名 - 如果库检测到无效的 IP 字符串,则会引发错误)来连接到 memcached 服务器。以下是示例配置字符串:

  <memcache>
    <memcached host="192.168.1.1" port="11211" expiration="300" />
  </memcache>

另一方面,Elasticache 为缓存集群提供静态主机名,不建议使用内部 IP 地址,因为这些地址容易更改。

有没有人能够将 NHibernate memcached 提供程序与 Elasticache 一起使用?是否有其他方法可以使用 NHibernate 配置 memcached,使其使用主机名而不是 IP 地址?

谢谢

J.P

4

4 回答 4

4

对于任何感兴趣的人:我无法使用 NHibernate.Caches.MemCache 指向主机名。然而,事实证明 NHibernate 有一个替代的 memcache 实现 - NHibernate.Caches.EnyimMemcached。这允许服务器由 IP 地址或主机名定义,解决了我的问题。我仍然很想知道是否可以使用较旧的 Memcache 集成来实现,但 EnyimMemcached 工作得很好

于 2013-03-15T03:28:43.583 回答
1

如果有人还在寻找解决方案,

您可以使用https://github.com/henriquecampos/NHibernate.Caches.Elasticache以非常少的配置连接到 Amazon Elastic Cache。

同样对于本地开发,您可以使用以下项目 https://github.com/hybridtechie/fake-elasticache-.NET-version

于 2017-09-25T05:02:31.073 回答
0

除了host在配置文件中使用属性,您是否可以不只使用hostname属性并将其设置为 ElastiCache 提供的 DNS 名称?

IE:

<memcached hostname="simcoprod02.m2st2p.fsw4.use1qa.cache.amazonaws.com" port="11211" expiration="300" />
于 2013-03-14T06:05:08.290 回答
-1

它的 aws 问题主机名(由亚马逊提供的主机名,amazon-XXXX)不适用,因为它们未映射到任何域。

内部ip之间的路由似乎也不可能,您可以尝试跟踪它无处不在。唯一的方法是使用你发现的外部弹性ips,

路由到映射到亚马逊的 cnames 似乎也不可能

您可以尝试提交反向 dns 映射请求(在亚马逊常见问题解答中),或设置辅助 dns 请求(免责声明,我没有尝试两者,我使用弹性 IP 进行映射,不得不继续处理更紧急的事情)

于 2013-03-20T15:13:35.453 回答