問題タブ [booksleeve]

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.

0 投票する
1 に答える
657 参照

c# - Redis BookSleeve ソケットの枯渇

BookSleeve を使用して Redis サーバーに接続し、エントリを追加/取得すると、SocketException が発生します。特定の例外は次のとおりです。通常、各ソケット アドレス (プロトコル/ネットワーク アドレス/ポート) の使用は 1 つだけ許可されます。

スタック トレースは次を指します。BookSleeve.RedisConnectionBase.Wait(Task task) in d:\Dev\BookSleeve\BookSleeve\RedisConnectionBase.cs:2050

私の質問は、コードで何か間違ったことをしているのか (可能性が高い)、接続を適切に閉じていないのか、それともその性質のものなのか? 例外は、約 60 秒で約 16000 回の操作が実行された後にスローされる傾向があります。操作の量が多すぎるとは思えませんよね?

関連するコードを以下に示します。その他の情報を提供させていただきます。

接続の取得 (これは主に BookSleeve 単体テストからコピーされたものです。

RedisConnection オブジェクトの汎用拡張メソッド:

0 投票する
1 に答える
1245 参照

c# - BookSleeve BlockingRemoveLeft は、リストにプッシュされたアイテムの一部のみを返します

BookSleeve に基づいて、非常に単純なキューイングのサンプルをまとめようとしています。

キューのコンシューマー側でこれまでに得たものは次のとおりです。

プロデューサーとしてLINQPadで以下を実行しています。

しかし、私はいくつかの本当に奇妙な結果を得ています:

1 回目の実行:

2 回目の実行:

3 回目の実行:

また、実行ごとに LINQPad が出力します: 、実際の redis クライアントを使用してqueue length: 0実行すると が返されます。LLEN test(integer) 0

ここで何かが欠けているように感じずにはいられません。ほとんどの場合、非同期のものに関係している可能性がありますが、それを見ることができません。

私の redis のバージョンは 2.8.3 で、BookSleeve のバージョンは 1.3.41 です。

ここでの実際の質問は、なぜ BookSleeve は redis リストに送信されたメッセージのサブセットのみを返すのですか?

0 投票する
1 に答える
529 参照

c# - インスタンス プロパティ以外のリフレクションでオブジェクト プロパティを取得する

リフレクションを使用してすべてのオブジェクト プロパティを列挙したいが、オブジェクトを参照するプロパティを除外したい (Redis/Booksleve を使用したキャッシュ ソリューションで使用しているため、これは十分に高速である必要があります)。

現在、私は次のものを持っていますが、これはインスタンスメンバーを含むすべてのオブジェクトプロパティを返します:

0 投票する
1 に答える
205 参照

c# - Redis と Booksleeve を使用してフォーラム メッセージを保存する

次のクラスの魔女がフォーラムにメッセージを保存しています

現在、これらのオブジェクトを、Json シリアル化を使用して文字列キー (Redis if course) に次のコード (簡略版) で格納することにより、Booksleeve でキャッシュしています。

私のフォーラム アプリケーション ビューでは、フォーラム スレッドに属する上記のメッセージのリストを表示するため、上記のフィールドのほとんどを利用しています。

ForumMessage クラスのリストを取得するには、mgetコマンドを使用します。

ユーザーが新しいメッセージを投稿するとき、またはメッセージに投票するときに、上記のフィールドのいくつかを更新する必要があります。更新するときは、 redis getを介してメッセージを取得し、必要なフィールド (ほとんどの場合 1 つまたは 2 つのフィールド) を更新してから、conn.store booksleeve メソッドを介して更新を保存します。

現在、ピーク時のフォーラムには、1 分あたり約 12 のメッセージと 1 分あたり 20 の投票が寄せられます (メッセージごとではない合計投票数)。

上記のより最適な解決策は、更新がより高速になるため、メッセージをredisハッシュに保存することであるかどうか疑問に思います。しかし、ハッシュを使用するために、redis で初期ストアを行うコードはより複雑 (遅く) になり、このコードは redis サーバーではなく Web サーバーで実行されます。

ハッシュを使用してメッセージストア/取得手順を再実装する価値があると思いますか、または、たとえばメッセージ挿入のレートが 30 メッセージ/分で増加した場合に、現在使用しているソリューションよりもうまくスケーリングできると思いますか?

本質的に、スタックオーバーフローがこの状況をどのように処理するかについて、いくつかのガイドラインを提供できますか?

0 投票する
1 に答える
2995 参照

redis - Stackexchange.Redis ConnectionMultiplexer.Connect() は接続に失敗しても何もしませんか?

Redis サーバーインスタンスに接続しようとしましたConnectionMultiplexer.Connect("127.0.0.1");が、サーバーが稼働していないにもかかわらず、接続でエラーがスローされたり、ConnectionFailedイベントが発生したりしません。スタンドアロン インスタンスも Windows Service of Redis も実行していないことを再確認しました。

接続が成功したかどうかを確認するにはどうすればよいですか? .Net 4.5 で実行し、StackExchange.Redis バージョン 4.0.30319 を使用しています

ありがとう