Rubyのmemcache-client


Railsはmemcache-clientを持っていて、memcachedキャッシュを操作するクライアントとして機能していますが、最近私は恥ずかしい百科事典のバックグラウンドで大量のMemCacheErrorを発見しました.私は最初memcachedの問題だと思っていましたが、保守パラメータでmemcachedを再コンパイルしました.問題は依然として発見されています.
最後にlibmemcachedに置き換えることでこの問題を解決した(なぜかは今まで分からなかった)
さらにmemcache-clientを使用する過程で2つの問題が発見された.
   1. Railsのmem_を通るとcache_storeがmemcache-clientを呼び出すと、incrementおよびdecrement操作は、mem_cache_storeはデフォルトでデータをMarshalでシーケンス化します.
   2. memcache-clientサポートget_Multi、すなわちmemcachedに一度に複数のkeyを要求するが、デフォルトで取得したデータがMarshalされた場合、rawデータは自分でmultigetを書くしかないことをドキュメントで明確に説明している.しかしlibmemcachedは、get操作によって直接複数のkeyを取得し、シーケンス化するかどうかを指定することをサポートします.
テストの下で、私はRubyのmemcachedというgemを使ってmemcachedを操作することをお勧めします.このgemはlibmemcachedを使ったC拡張で、純粋なrubyのmemcache-clientに比べて効率が高く、機能がより強く、バイナリプロトコルとudpプロトコルを使ってmemcachedの効率を最大限に発揮することができます.
Railsでlibmemcachedをcache storeとして使用するには、LibmemcacheStoreのRailsプラグインをインストールし、次の構成を指定します.APIはCache Store規格に準拠しています.
config.cache_store = :libmemcached_store