我正在用 erlang/elixir 开发一个应用程序。我想从 erlang 访问 Couchbase 2.0。我找到了 erlmc 项目(https://github.com/JacobVorreuter/erlmc),它是一个二进制协议 memcached 客户端。注释说“您必须拥有 1.3 或更高版本的 memcached”。
我知道 Couchbase 2.0 使用 memcached 二进制协议来访问数据,我正在寻找从 erlang 中执行此操作的最佳方法。
该手册谈到了 8092 上的“Couchbase API 端口”,并将 11210(接近 11211 memcached 普通端口)称为“内部集群端口”。 http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-network-ports.html
所以,问题是这样的:
设置 erlmc 以在端口 8092 上与 Couchbase 2.0 对话是正确的方法吗?
Erlmc 讨论了它如何散列密钥以找到正确的服务器,这让我认为它可能是 memcached 协议的版本太旧(或者我应该连接到 couchbase 2.0 上的内置 MOXI 吗?如果是这样哪个港口?)
erlang 视图的端口是哪个?并且可能视图的 REST 接口不支持直接键查找,所以我也需要编写代码来访问它,对吧?
我热衷于使用纯 erlang 解决方案,因为 NIF 不是并发的,而且我会有一些未知数量的进程想要同时访问 Couchbase 2.0。
我上一次与 Couch 合作是 CouchDB,所以我试图在 Couch 和 Membase 合并后将它们拼凑起来。
如果我走错了路,请建议以高度并发的方式从 erlang 访问 Couchbase 2.0 的最佳方式。memcached 协议应该非常可靠,因此几年前的库应该可以工作,对吧?
谢谢!