問題タブ [stackexchange.redis]

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 に答える
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 を使用しています

ありがとう

0 投票する
0 に答える
494 参照

c# - Sets と .Net クライアントを使用して、redis で 2 つのコレクションを管理します。これは正しいアプローチですか?

私は.NET領域のredisを操作/調査しようとしています.定義されたタスクはセットとredis自体で最もよくカバーされていないという印象があります(変更する必要があるエンティティがあるため)-おそらく使用する方が良いでしょういくつかの他のアプローチ/または redis dataTypes ここ (最初のアイデアの 1 つは、(プロパティを管理するために) redis ハッシュを操作することでしたが、関連するエンティティのコレクションを取得する必要があるため、セットを試してみることにしました。この操作は一般的に最も重要なもの)。だから、私が今やったこと:

現在、エンティティの次の構成があります。

私がやろうとしているのは、エンティティ アイテムを 2 つのコレクションで管理することです。

  1. 現在- クライアント (キャッシュ) で利用可能なエンティティ アイテム (最大 5000) のコレクション
  2. Raw - 承認が必要なエンティティ アイテムのコレクション (現在のコレクションの一意の ID の最大 10%)

これらのコレクションに対して実行する操作は次のとおりです

  1. Get All Entity items from Current collection : GetCurrent - 最も重要なタスク
  2. Raw コレクションの変更:

    2.1) 新しいエンティティを Raw に追加します (現在のコレクションの適切なカウンター/状態を変更できます) : AddRaw

    2.2) Raw の既存のエンティティを更新する (そのような ID が既に利用可能な場合) : UpdateRaw

  3. 現在のコレクションを変更する

    3.1) Raw コレクションからのすべての変更が Current に適用されます (まだ行われていない場合): SyncCurrent

    3.2) Raw コレクション エンティティを返す (増分変更)

    3.3) Raw コレクション エンティティをクリアする (コレクションはリセットされます)

アプローチ:

  1. Set タイプのコレクションを定義します (コレクションに関連するアイテムのリストを取得できるようにするため): SMEMBERS

  2. コレクションのアイテムの ID のみを含む追加のコレクション Current:Ids、Raw:Ids を作成します - 元のコレクション内のアイテムかどうかを定義します: SISMEMBER

  3. 新しいアイテムをセットに追加: SADD

  4. セット内のアイテムの変更: Get (SMEMBERS: Id をマスク要素として使用する SSCAN またはアイテムを反復処理する ( SMEMBERS )、ID を使用してエンティティを取得する)、RemoveOldFromSet : SREM、AddUpdated : SADD

問題、問題 (単体テスト中に特定): (報告されたすべての問題は、StackExchange.redis クライアントの機能ではなく、redis サーバー自体への接続に関連しているようです)

  1. 新しい StackExchange クライアントは、SMEMBERS で timeOut 例外をスローすることがあります (現在のコレクションに 500 アイテム)

  2. 項目 (750 以上のエントリ) を Current および Current:Id のセットに挿入しようとすると、StackExchange トランザクションで timeOut 例外がスローされ、現在の connectionTimeOut および SyncTimeOutrs は 5000 ミリ秒 (5 秒) に設定されます。

いくつかのテストを実行した後 (セット内の数百のアイテムで、選択したアプローチは最初は間違っていたと思います。Microsoft のキャッシュを使用して、これを再設計する必要があります)。今説明した方法で実装できないのですか?

前もって感謝します。

0 投票する
2 に答える
7542 参照

c# - Stack Exchange Redis でキーに相当するコマンドが見つかりません

Stack Exchange Redis に切り替えたところ、同等のコマンド キーが見つかりませんでした。省略されていますか、それとも getdatabase() 以外の場所にありますか?

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

redis - Stackexchange.Redis、一度に複数のチャネルに公開できますか?

glob スタイルのパターンを使用して、同じコマンド内で複数のチャネルにメッセージを発行できますConnection.GetSubscriber().Publish("room/*", "my message")か? パターンに一致するすべてのチャネルにメッセージが発行されますか?

Redis の基本的な pub/sub パターンを誤解している場合、上記の質問はほとんどまたはまったく意味がないかもしれません。私の理解では、各SubscribeコマンドはRedisサーバーにチャネルを確立するため、チャネルIDはサーバーに認識されているため、サーバーが発行コマンドを受信すると、一致するすべてのチャネルに発行されたメッセージを「ファンアウト」する機能が必要ですglob スタイルのパターン。私が間違っている場合は修正してください。

追加の質問ですが、glob スタイルのパターンを使用して複数のチャネルにサブスクライブすることもできると思いますよね?

ありがとう