問題タブ [enyim]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
memcached - プレフィックスでMemcachedキーを取得/検索することは可能ですか?
memcachedにたくさんのキー/値を書き込んでいます->PREFIX_KEY1、PREFIX_KEY2、PREFIX_KEY3
PREFIX_で始まるすべてのキーを取得する必要があります
出来ますか?
caching - Memcached 依存アイテム
memcahced (具体的にはEnyim memcached client ) を使用しており、他のキーに依存するキャッシュ内のキーを作成できるようにしたいと考えています。つまり、Key AがKey Bに依存している場合、 Key Bが削除または変更されるたびに、 Key Aも無効です。
可能であれば、クラスター内のノードに障害が発生した場合でもデータの整合性が維持されるようにしたいと考えています。つまり、キー Bがある時点で使用できなくなった場合、キー Bが無効になった場合でもキー Aは引き続き無効である必要があります。
この投稿に基づいて、これは可能であると信じていますが、これがどのように/なぜ機能するのかを納得させるのに十分なアルゴリズムを理解するのに苦労しています.
誰でも私を助けることができますか?
c# - データのバージョン管理/移行に関するヘルプが必要
私は、マルチノード クラスターを備えた永続化レイヤーとしてMembase (Memcached + 永続化を考える) を使用するプロジェクトに取り組んでいます。Enyimクライアントを使用してキャッシュと通信し、バイナリ シリアライゼーションを使用してオブジェクトをキャッシュとの間でシリアライズ/デシリアライズします。
私たちが抱えている懸念の 1 つは、データ モデルへの変更を効果的に管理する方法です。通常の SQL データベースを使用している場合は、更新スクリプトを実行してテーブルを更新できます。
Membase を使用して、キャッシュされたバイナリ オブジェクトを処理すると、キャッシュされたすべてのオブジェクトを取得して、両方のバイナリをロードできます。
- キャッシュされたオブジェクトをシリアル化するために使用されたコードのバージョン
- さまざまなプロパティを定義する新しいバージョンのコード
このように効果的にデータを移行しますが、キャッシュに数千万のオブジェクトが潜在的に存在する可能性がある場合、それはほとんど望ましくありません.理想的には、必要な場合にのみデータを移行し、実行できる反復プロセスを実行できるようにしたいと考えています.バージョン 1 のデータをバージョン 2 に移行し、次に 3 などに移行しますが、バイナリ データでこれを行う方法を考えるのに苦労しています..
暗闇の中でのショットですが、以前にこの種の問題に対処した経験がある人はいますか? 他の形式のシリアライゼーションを喜んで使用し、代わりに単純に文字列 (圧縮されている可能性があります) データをキャッシュに格納し、シリアライゼーションを自分で処理することができます。
ありがとう、
.net - memcached(Enyimクライアント)への接続が多すぎるのを防ぐ
FAQの引用を踏まえて、memcached接続を開くことに対処するための効率的なソリューションの提案を探しています。
誤って何度も接続するのを妨げるものは何もないことを忘れないでください。保存しようとしているオブジェクトの一部としてmemcachedクライアントオブジェクトをインスタンス化する場合、1つのリクエストで1,000個のオブジェクトが1,000個の並列接続を作成しても驚かないでください。リストに飛び乗る前に、このようなバグを注意深く探してください。
関連項目:Memcachedクライアントの初期化と接続オブジェクトの管理。
キャッシングアセンブリでシングルトンを使用してmemcachedクライアントを提供することを検討しましたが、ロックによって(不要な?)オーバーヘッドが発生するため、より優れたメソッドが必要になると確信しています。
クライアントの使用パターンについては明確ですが、スケーラビリティとパフォーマンスに関してクライアントを効率的に使用する方法については明確ではありません。他の人はmemcachedクライアントの使用にどのように対処しますか?
あなたのためにそれに50の恵みがあります。
membase - Enyim パフォーマンスの問題
マルチスレッド キュー リーダーに membase サーバーへのアクセスを提供するために、enyim を使用しています。これらのリーダーは AQMP キューにアクセスし、キャッシュをチェックしてアイテムがすでに処理されているかどうかを確認し、そうでない場合はデータベースとキャッシュに挿入します。問題は、キャッシュへのアクセスが CPU を食い尽くすことです。メッセージを処理する 4 つのスレッドでは、CPU は 80 ~ 90% です。enyim にバイトを供給するカスタム シリアライザーを実装しました。インメモリ フォールバックに切り替えると、CPU 使用率が高くなる前に最大 9 スレッドに進むことができます。インメモリ キャッシュと membase キャッシュの唯一の違いは、バイトがキャッシュではなくメモリに格納されることです。この高い CPU 使用率を引き起こしている可能性がある、または正常な eynim で何が間違っている可能性がありますか? 最大で、クライアントは約 2 を実行しています。
c# - Membase Node.IsAlive = False?
QA 環境には 2 つの Web サーバーと 1 つのアプリ サーバーがあります。それぞれが Membase サービスをホストします。簡単にするために、Web サーバーを web01 と web02 と呼びましょう。どちらも IIS を実行しています。
Membase にアクセスするには、.Net クライアントを使用します: http://memcached.enyim.com/
ここで発生している問題は、web01 が Membase にアクセスし、いつでも問題なく値を設定および取得できることです。ただし、web02 は Web アプリケーションから Membase にアクセスできないようです。
テスト コンソール アプリを作成し、web02 サーバーから実行したところ、問題なく動作しました。
web02 構成にある URL とポートに Telnet で接続しようとしても、うまくいきました。
Membase 構成値は、machine.config ファイルで定義されます。WinMerge を使用して web01 と web02 の間で machine.config ファイルを比較したところ、それらは同一でした。
次に、リフレクションを使用して MembaseClient オブジェクトのダンプを作成しました。これが Web02 で得られるものです。
==========================================
==========================================
最後の 3 行がどのように Node IsAlive = False に言及しているかに注意してください...これは私にとって非常に不可解です。また、web02 を含む任意の場所から実行されているテスト アプリから、その QA Membase クラスターで正常に値を設定および取得できます。
誰もこの問題に遭遇したことがありますか? または、それを解決するためにどこを探すべきかについて何か考えがありますか?
ありがとう。
memcached - Enyim Memcached クライアントは、有効期限パラメーターが渡された状態では機能しません
Enyim memcached クライアントを使用して期限切れのタイムスパンでデータを保存すると、機能しないことがわかりました。誰でも助けてもらえますか?
私のテスト コードでは、有効期限が 10 分の日付を保存し、すぐにキャッシュから取得しようとしましたが、null オブジェクトを取得しました。
c# - 複雑なオブジェクトをmemcachedに保存できません
私はEnyimを使用しています。C#用のmemcachedクライアントをキャッシュすると、サーバーはubuntuの最後のバージョンではhttp://memcached.orgになります。
myXmlがnullですが、オブジェクトを保存する方法があるのはなぜですか。目的:MemcachedのコードでHttpCacheを置き換えようとしていますが、HttpCacheを使用すると、複雑なオブジェクトをキャッシュに追加できます。
ここでXmlDocumentは例ですが、単純なクラスでは機能しません
linq - Enyimシリアル化エラーLinq
Devartを使用してDBオブジェクトとストアドプロシージャのマッピングを実行しています。
次に、(Enyim by MemCachedを使用して)ストアドプロシージャオブジェクトの結果をキャッシュに保存します。
これを行おうとすると、この種のエラーが発生します(つまり、Devart.Data.LinqにDevart.Data.Linq.aと入力すると、シリアル化可能として署名されません)
これはEnyimログです。telnetでオブジェクトをキャッシュに取得して設定しようとしたので、MemCachedは正しく構成されていると確信しています。
exception - EnyimのMemcache(ノーススケール)ソケットプールの質問
私はNorthscale1.0.0を使用していますが、新しいバージョンにアップグレードするのに十分な時間、それをぐったりさせるのに少し助けが必要です。Enyimライブラリを使用してC#とASP.NETを使用しています。現在、app.configのsocketPool設定に従って、アプリケーションに十分な接続がないことが疑われます。また、前の開発者のコードは、MemCacheへのGet呼び出しの試行からの例外を、アイテムがキャッシュにないかのように単純に処理することにも注意しました。これにより、プールが取得されたときにデータベースへの呼び出しが定期的に急増する可能性があります。飢えた。サーバーの負荷とは関係がないように見える奇妙な負荷の急上昇があります。彼はノーススケールへの接続のライフサイクルを正しく管理しておらず、その結果、ソケットプールで定期的に飢餓が発生していると思われます。
Getメソッドを呼び出してキャッシュからアイテムを取得するときに探す必要のある特定の例外はありますか?これに関する十分な情報を提供するドキュメントには、あまり多くの情報が表示されていません。誰かがこれに関するサンプルコードを持っていますか?.NETライブラリはおそらくそれらのいずれかに基づいていると思うので、JavaまたはPHPコードも受け入れます。
何か案は?
ありがとう、ウィル