やったことだけ書く備忘録

ES6でnodejs用のMemcachedクライアント書いた

nodejsのMemcachedクライアント書いた



今のnpmにもMemcachedのクライアントはあるにはあるけど、再接続に対応してなかったり、そもそも大体コールバックパターンだし、クオリティが不安だったりしたので新しく書いた。
今新しく書くならES6で Promiseだよなーってことで。あと再接続とコマンドキューイング、コネクションプールも付けておいた。

https://github.com/ysugimoto/node-memcached-client

今の開発でMemcached使うケースって結構あると思うんだけど、みんなnodeの場合どうしてるんだろう。bluebirdでアレしてたりするのかな。
Redis使うのが一般的かもしれないけど、Memcachedの方がパフォーマンス出るケースもままあるし…。

大手だと社内で持ってたりしそう(プロトコル簡単だし)で、自分も業務で使いたかったから書いたけど、
せっかくだし公開しました。npm registryにある方がインストールしやすい。




$ npm install node-memcached-client


でインストールできます。



使い方




const Memached = require('node-memcached-client');
const 
client = new Memcached();

client.on('connect', () => {
  
client.set('foo''bar')
    .
then(() => client.get('foo'))
    .
then(value => assert(value === 'bar'));
});
client.connect();
 


みたいな感じでちょいモダンな感じで使えます。あとクエリをキューに溜めていきつつ通信するので、途中で接続が切れて復帰したときにキューから処理を実行するような感じになってます。
あとはコネクションプールも実装してて、1つのコネクションのキューが増えて詰まってくると別のコネクションを貼って擬似的にスケールするようなプーリングをします。

その他はサロゲートペア対応とかも(当たり前だけど)やったので結構モダンに使えるかなーって思います。とりあえずクライアント用途なのでstore系とget/delete系しか実装してないです。
細かい使い方はGithubを見てください。一通りテストは通してるけど、バグとかあればPRくださいませ。



余談



PHPもそうだけど、memcacheだったりmemcachedだったり、さらにnpmの場合はパッケージ名がカオスすぎるて辛い。

現場からは以上です。

« 前の記事 次の記事 »

15件のコメント

BalladolbineAppeava さん

Hello. And Bye.

Loppiehyhor さん

axman19@hotmail.com

RemOknaNug さん

Монтаж, обслуживание и ремонт окон -
<a href=http://gorodokon52.ru>Установка и ремонт окон - gorodokon52.ru</a>

FXBrokerFit さん

Agjentët e këmbimit valutor rangut. http://fx-brokers-review.com/index_al.html

BytovkaNN さん

dsk-nn.ru - аренда и продажа бытовок в Нижнем Новгороде -

[url=http://dsk-nn.ru] dsk-nn.ru - Строительный городок[/url]

qoqosale さん

[url=http://levitrageneric-cheapest-price.net/]levitrageneric-cheapest-price.net.ankor[/url] <a href="http://cheapest-priceventolinonline.net/">cheapest-priceventolinonline.net.ankor</a> http://levitra-online-cheap.net/

RobertPed さん

http://www.gzlouisfeny.com/home.php?mod=space&uid=224128

<a href=http://www.xwmychina.com/home.php?mod=space&uid=138245>xwmychina</a>
<a href=http://vmeste-prirode.ru/users/MichaelGrign>vmeste-prirode</a>

odikuyi さん

http://levitra-20mg-priceof.online/ - levitra-20mg-priceof.online.ankor <a href="http://pricespharmacy-canadian.online/">pricespharmacy-canadian.online.ankor</a> http://buy-amoxicillin-amoxil.online/

imucavuyu さん

http://levitra-20mg-priceof.online/ - levitra-20mg-priceof.online.ankor <a href="http://pricespharmacy-canadian.online/">pricespharmacy-canadian.online.ankor</a> http://buy-amoxicillin-amoxil.online/

asaqicouawi さん

http://levitra-20mg-priceof.online/ - levitra-20mg-priceof.online.ankor <a href="http://pricespharmacy-canadian.online/">pricespharmacy-canadian.online.ankor</a> http://buy-amoxicillin-amoxil.online/

emudeyug さん

http://levitra-20mg-priceof.online/ - levitra-20mg-priceof.online.ankor <a href="http://pricespharmacy-canadian.online/">pricespharmacy-canadian.online.ankor</a> http://buy-amoxicillin-amoxil.online/

eaqojaj さん

http://levitra-20mg-priceof.online/ - levitra-20mg-priceof.online.ankor <a href="http://pricespharmacy-canadian.online/">pricespharmacy-canadian.online.ankor</a> http://buy-amoxicillin-amoxil.online/

erocrugudx さん

[url=http://levitra-20mg-priceof.online/]levitra-20mg-priceof.online.ankor[/url] <a href="http://pricespharmacy-canadian.online/">pricespharmacy-canadian.online.ankor</a> http://buy-amoxicillin-amoxil.online/

GlennOdorD さん

заказать продвижение сайта магазин логин в скайпе SEO PRO1




[url=http://progonrumarket.ru/zakazat-audit-sajta/]контекстная реклама цена[/url]

edicadevyi さん

[url=http://doxycycline-cheapbuy.site/]doxycycline-cheapbuy.site.ankor[/url] <a href="http://onlinebuycytotec.site/">onlinebuycytotec.site.ankor</a> http://tadalafilcialis-cheapestprice.site/

コメントを投稿する

 画像に表示されている文字を入力してください。