memcache vs memcached?


76

memcachedを使用したい

http://www.danga.com/memcached/

私はそれをインストールしました yum install memcached

しかし、今はPHPに接続する必要があり、memcacheという名前の拡張機能とmemcachedという名前の拡張機能がありますか?ARGH

http://us3.php.net/manual/en/book.memcache.php
http://us3.php.net/manual/en/book.memcached.php

誰かが私をここで正しい方向に向けることができますか?

また、ローカルであっても機能するためにポートを開く必要がありますか?実行した後、telnet 127.0.0.1 11211を試してみると、接続が拒否されました。


24
この質問を今見ている場合、受け入れられた答えが間違っていることに留意してください。名前だけに基づいてソリューションを選択するのは危険です。特に、名前の良い方が悪いプロジェクトの場合は危険です。詳細については、他の回答をご覧ください。
タイラー

@thanksyoは、チェックした回答のチェックを外してください。それは遅くここに来るより多くの人々を混乱させるだけです。それまでの間、私は間違った答えをダウンボットし、thanksyoがチェックを外すまで同じことを他の人に勧めます。
-joedevon

回答:


24

短い答え:どちらかがあなたが探しているものですが、私の最初の選択は、純粋に命名法の正しい使用基づいて、memcache(最初にリストしたもの)です。

今、私はその結論に至った方法です:

これは、質問の質問者によるフラストレーションを説明する、命名規則(なじみのない人向け)の簡単な背景です。ただし、インターフェースまたはクライアントアプリケーションは、デーモンの制御またはアクセスに使用します。ほとんどの場合、デーモンにはクライアントと同じ名前が付けられ、「d」という文字が追加されます。たとえば、「imap」は「imapd」デーモンに接続するクライアントになります。

この命名規則は、memcacheモジュールの概要を読むときにmemcacheによって明確に遵守されています(この抜粋でmemcacheとmemcachedの違いに注意してください)。

Memcacheモジュールは、特に動的Webアプリケーションのデータベース負荷を減らすように設計された、非常に効果的なmemcachedキャッシングデーモンへの便利な手続き型およびオブジェクト指向のインターフェイスを提供します。

Memcacheモジュールは、セッションハンドラー(memcache)も提供します。

memcachedの詳細については、» http://www.danga.com/memcached/をご覧ください

ここでのフラストレーションは、memcachedと呼ばれる実際のデーモンと同じ名前を共有するため、memcachedという名前が誤って付けられたPHP拡張モジュールの作者によって引き起こされます。また、memcached(phpモジュール)概要で、memcachedデーモンにアクセスするためにモジュールで使用される共有ライブラリ(またはAPI)であるlibmemcachedについても言及していることに注意してください。

memcachedは、高性能の分散メモリオブジェクトキャッシングシステムであり、本質的に汎用ですが、データベースの負荷を軽減することで動的なWebアプリケーションを高速化することを目的としています。

この拡張機能はlibmemcachedライブラリを使用して、memcachedサーバーと通信するためのAPIを提供します。また、セッションハンドラー(memcached)も提供します。

libmemcachedに関する情報は» http://tangent.org/552/libmemcached.htmlにあります。

要約すると、両方とも機能的には同じですが、作成者が異なるだけで、一方は他方よりも適切に命名されています。


70
プロジェクトの名前は、実際にある実装を他の実装よりも選ぶ適切な理由ですか?
デビッドパシュリー

4
David:まったくそうではありません...しかし、テストの最後まで特定の実装を残すのは十分な理由です。私はまだ利用可能なすべての実装を試してみますが、著者によるソフトウェアの説明の技術的な欠陥は、ソフトウェアにどのような技術的な欠陥があるのか​​疑問に思う傾向があります。ただし、実際のソフトウェアについてのコメントを読みましたので、回答に対しても賛成票を投じました。:-)
ジェシカマッキノン

4
memcachedの "d"がデーモンを意味するのではなく、動詞キャッシュの過去分詞を意味するとは思っていませんでした。さらに、新しいインターフェイスに「memcache」という名前を付けることはできません。すでにその名前のインターフェイスが存在しているためです。
GetFree

9
バグの量と、拡張機能が積極的に開発されているかどうかは、問題のあるdについて分析するよりもはるかに重要です。真剣に、あなたはそのような何かのために最後に1つの拡張機能をテストすることさえ考えるべきではありません、それは完全に
即席です-Fake51

12
ERM、両方はできません。機能的に同じmemcached、例えばCASトークンをサポートしmemcacheていません。それらが必要な場合は、どちらを選択するか(名前が間違っているかどうか)を知っています。
Wrikken

56

PHPクライアントの比較をご覧ください。

短いバージョン:両方とも機能しますが、ほとんどの場合、どちらか一方で十分です。

他の問題について:はい、できますtelnet 127.0.0.1 11211。localhostがそれ自体と通信するのをブロックするファイアウォールはほとんどありません。接続できない場合は、を実行してmemcachedが実際に実行されていることを確認しps auxwww | grep memcachedます。これにより、memcachedの起動に使用されるコマンドライン引数も表示されます。引数の1つは、-p 11211または別のポート番号でなければなりません。man memcached可能なすべての引数の意味を参照してください。


2
トラブルシューティング手順を追加するための賛成票。
ジェシカマッキノン

これは本当に明確な答えです。
ダニダカル

@ Nate、Windowsに相当するものはps auxwww | grep memcached何ですか?
パセリエ

1
@Pacerier:見てくださいsuperuser.com/questions/415360/...を。プロセスエクスプローラーは、実行中のプロセスを見つけ、そのコマンドライン引数を確認する最も簡単な方法です。
ネイト

@Pacerierは、サーバープロセスが実行されているかどうかを確認し、どのように呼び出されたかを確認します。
-Jasen

27

Nateのリンクが示唆しているように、両方とも簡単な使用法で完璧に機能します。ただし、me​​mcachedは、memcachedから最大限のパフォーマンスを引き出すことができる多くの機能をサポートしています。バイナリプロトコルは、クライアントとサーバー間で送信する必要があるデータの量を減らします。マルチゲットとマルチセットを使用すると、複数のアイテムを同時に取得/設定できます。memcacheの出力がさらに必要な場合は、memcachedが優れたモジュールです。libmemcachedを使用すると、ライブラリ自体がPHPのみのバージョンよりも最適化されている可能性があります。

Memcachedは、memcacheと比較して8か月前にリリースされたばかりの最新モジュールです。古いバージョンのPHPをターゲットにする必要がある場合、実際に使用できるのはmemcacheのみです。


素晴らしい説明!
ジョン

21

古い、バグの多いものがphp-memcache、最も適切な名前のように思われたために呼び出されます。代わりに、Diggの人々が独自に開発した新しい、より良いバージョンphp-memcachedは、明確化のために名前が付けられました。

名前の正しさだけに基づいて他のものを選ぶことをお勧めする人は、技術的なアドバイスを提供するビジネスを実際に持っていません。


6

最近php-memcacheを使用したので、php-memcachedを指定する必要があります。

ここに私の頭の上のいくつかの理由があります。

1)getErrorCode()または同等のメソッドがないため、get()がFALSEを返す場合、memcacheに格納されている値がfalseであるためか、何らかの問題が発生したかどうかはわかりません。

2)一貫したハッシュのためのハッシュアルゴリズムは、libmemcachedから構築された多くのクライアントライブラリなど、他の実装とは異なるようです。これは、複数の言語で同じmemcacheクラスターを使用したい場合、PHPクライアントで値を保存すると他のクライアントがそれを見つけられないという問題が発生する可能性があることを意味します。


3

両方とも今日の時点で問題があります。PECL / memcacheは古くて信頼性がありますが、いくつかの例外はありますが、古くなっています。PECL / memcached 1.xは、せいぜいベータ版です。一部の関数は数値キーを処理しないため、永続的な接続を使用すると接続がリークします。一部(すべて?)はGitHubで修正されており、2.xのある時点でリリースされますが、今日はリリースされません。詳細なレビューについては、http://brian.moonspot.net/php-memcached-issuesを参照してください


PECL / memcached 1.xは現在安定しています。PECL / memcache 2.xは制限されています。PECL / memcache 3.xは非常に不安定です。
-aredridel

2

私は「Expert PHP and MySQL」という本に取り組んでいます。違いについてはほぼ同じことを書きました。私が推奨したのはPECL / memcachedです。#1-フル機能の高性能Cライブラリをラップします。#2-最近維持されます。#3-その他の機能。PECL / memcacheへの非難はありません。


0

Drupal 6とphp-pecl-memcachedでかなり深刻な問題が発生し、応答時間は呼び出しごとに最大5ミリ秒遅れ、特定のサイトでphp-pecl-memcachedの変更前よりも5倍の呼び出しが作成される。php-pecl-memcacheに変更すると、すべての問題が修正されました。待ち時間と余分な呼び出し。

この回答は、Drupal 6および場合によってはDrupal 7を使用しているユーザーを支援するためのものです。


-3
  • memcacheはmemcached(サーバー)のクライアントです
  • libmemcachedはmemcachedのクライアントでもあります

また、memcachedには他のクライアントがあります。http: //code.google.com/p/memcached/wiki/Clientsを参照してください

ウェブから切り取りと貼り付け:

http://www.php.net/manual/en/intro.memcache.php

  Memcache module provides handy procedural and object oriented 
  interface to memcached, highly effective caching daemon, which was 
  especially designed to decrease database load in dynamic web applications.
The Memcache module also provides a session handler (memcache).
More information about memcached can be found at » www.memcached.org 

http://www.php.net/manual/en/intro.memcached.php

   » memcached (http://www_memcached_org/) is a high-performance, distributed 
  memory object caching system, generic in nature, but intended for use in 
  speeding up dynamic web applications by alleviating database load.
  This extension uses libmemcached library to provide API for communicating with
  memcached servers. It also provides a session handler (memcached).
  Information about libmemcached can be found at 
   » tangent.org/552/libmemcached.html

http://pecl.php.net/package/memcached「libmemcached ライブラリ経由でmemcachedとインターフェイスするためのPHP拡張機能」この拡張機能はlibmemcachedライブラリを使用して、memcachedサーバーと通信するためのAPIを提供します。https://github.com/andreiz/php-memcached

http://pecl.php.net/package/memcache「memcached 拡張機能」Memcachedは、オブジェクトをメモリに保存することでデータベースの負荷を軽減するために、特に動的Webアプリケーション向けに設計されたキャッシュデーモンです。この拡張機能を使用すると、便利なオブジェクト指向および手続き型インターフェイスを介してmemcachedを操作できます。

http://code.google.com/p/memcached/wiki/PHPClientComparison

                        pecl/memcache      pecl/memcached
  First Release Date      2004-06-08         2009-01-29 (beta)
  Actively Developed?     Yes                    Yes
  External Dependency     None              libmemcached

6
この長々とした答えは、ポスターの内容を明確にすることにも近づきません。ポスターは、すでに複数のクライアントがあることを認識しています。それらをリストし、代替名を提案しても、正しい名前を選択するのは簡単ではありません。
マルタインHeemels
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.