2012-01-23 28 views
2

設置我的Heroku的實例有Memcached的,所以現在我有MEMCACHE_PASSWORD,MEMCACHE_SERVERS和MEMCACHE_USERNAME ENV變量。如何將它們與任何現有的node.js memcached庫一起使用?他們似乎只採取一個主機和端口(我假設端口是默認的11211?)。的Node.js在Heroku - Memcached的用法

謝謝

回答

1

截至今天,沒有可用的Node庫支持這種情況。 Heroku的memcached實例使用SASL進行身份驗證。目前沒有可用的庫支持這個,並且there doesn't seem to be much momentum to add support, either

如果你想嘗試自己實現這個,可能值得看看sasljs,這是一個圍繞GNU SASL約束的節點。你最好的選擇可能是分叉node-memcached並在那裏添加SASL支持。

+0

sasljs只實現SASL的服務器端,所以它不會幫助這個用例:( 我會很高興向node-memcached添加SASL支持,而3rd-Eden似乎[很高興能夠採用它(https://github.com/3rd-Eden/node-memcached/issues/15),但我怕我不知道從哪裏開始... –

+0

@NearPrivman你是正確的,sasljs只做了服務器端,但是,它結合GSASL,其也可以用於SASL客戶端(http://www.gnu.org/software/gsasl/manual/gsasl.html#Examples)。一種選擇是叉sasljs並添加綁定無論是從GSASL必須要進行SASL客戶端。不是一個簡單的任務,無可否認。 –

-1

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

var client = new memcache.Client('11211', 'http://xxxx:[email protected]');

+0

似乎節點內存緩存取決於node.js的> = 0.6,而Heroku的需要版本0.4.7。 – Jusso

+0

這不似乎也在Node 0.6上工作。 @拉多斯拉夫你有沒有嘗試過,或者你只是在猜測? 我發現了一個'[錯誤:的getaddrinfo EFAULT]' –

+0

BTW,@Jusso,Heroku的現在支持節點0.6爲好,你只需要在你的package.json https://devcenter.heroku.com/articles指定它/的NodeJS版本 –

6

如上所述,在Heroku兩個內存緩存插件僅支持二進制協議。我寫了一個庫,MemJS,與這些插件一起工作(支持二進制協議的SASL並識別Heroku環境變量)。