【问题标题】:Node.js on Heroku - Memcached UsageHeroku 上的 Node.js - Memcached 用法
【发布时间】:2012-01-23 20:06:45
【问题描述】:

我将 Heroku 实例设置为具有 Memcached,所以现在我有了 MEMCACHE_PASSWORD、MEMCACHE_SERVERS 和 MEMCACHE_USERNAME 环境变量。如何将它们与任何现有的 node.js memcached 库一起使用?它们似乎都只接收一个主机和端口(我假设端口是默认的 11211?)。

谢谢

【问题讨论】:

    标签: node.js heroku memcached


    【解决方案1】:

    如上所述,Heroku 上的两个 Memcache 插件都只支持二进制协议。我编写了一个库,MemJS,它可以与这些插件一起使用(支持二进制协议的 SASL 并开箱即用地识别 Heroku 环境变量)。

    【讨论】:

      【解决方案2】:

      截至今天,没有可用的节点库支持这种情况。 Heroku 的 memcached 实例使用 SASL 进行身份验证。当前可用的库都不支持此功能,there doesn't seem to be much momentum to add support, either

      如果您想尝试自己实现此功能,可能值得查看sasljs,它是一个围绕GNU SASL 的节点绑定。你最好的选择可能是 fork node-memcached 并在那里添加 SASL 支持。

      【讨论】:

      • sasljs 只实现了 SASL 的服务器端,所以它对这个用例没有帮助 :( 我很乐意为 node-memcached 添加 SASL 支持,而 3rd-Eden 似乎 @987654326 @,但恐怕我不知道从哪里开始......
      • @NearPrivman 你是对的,sasljs 只做服务器端。但是,它绑定了 GSASL,它也可以用于 SASL 客户端 (gnu.org/software/gsasl/manual/gsasl.html#Examples)。一种选择是分叉 sasljs 并为 GSASL 实现 SASL 客户端所需的任何内容添加绑定。诚然,这不是一项微不足道的任务。
      【解决方案3】:

      https://github.com/elbart/node-memcache

      var client = new memcache.Client('11211', 'http://xxxx:xxxxx@mc10.ec2.northscale.net');

      【讨论】:

      • 似乎 node-memcache 依赖于 node.js >=0.6 而 Heroku 需要 0.4.7 版本。
      • 这似乎也不适用于 Node 0.6。 @Radoslav 你试过这个还是你只是在这里猜测?我收到了[Error: getaddrinfo EFAULT]
      • 顺便说一句,@Jusso,Heroku 现在也支持 Node 0.6,你只需要在你的 package.json 中指定它 devcenter.heroku.com/articles/nodejs-versions
      • 来自此库的作者 (Tim Eggert):“我不确定任何人如何将 node-memcache 与 SASL 一起使用,因为 memcached 文档说 SASL 仅适用于二进制协议。节点-memcache 目前只使用 Text-Protocol,因此不应该与之通信。(见code.google.com/p/memcached/wiki/SASLHowto)"
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-05
      • 2013-04-19
      • 2018-09-16
      • 2012-07-15
      • 1970-01-01
      • 2012-07-25
      • 1970-01-01
      相关资源
      最近更新 更多