問題タブ [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 スタイルのパターンを使用して複数のチャネルにサブスクライブすることもできると思いますよね?

ありがとう

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

stackexchange.redis - StackExchange.Redis を使用して flushdb する方法は?

stackexchange.redis を使用して redis のすべてのキーを削除する方法はありますか?

単体テストのセットアップで redis データベースをフラッシュしようとしています。

ありがとう。

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

c# - BookSleeve ConnectionUtils の代わりに StackExchange.Redis ConnectionMultiplexer を使用して Redis センチネルに接続します。

BookSleeve ConnectionUtils の代わりに StackExchange.Redis ConnectionMultiplexer を使用して Redis センチネルに接続するにはどうすればよいですか。

私は現在 BookSleeve を使用しています:

ConnectionUtils.Connect("127.0.0.1:26379,serviceName=mymaster");

私はそれを StackExchange.Redis に置き換えようとしました: ConnectionMultiplexer.Connect("127.0.0.1:26379,serviceName=mymaster");

しかし、それは機能していません。

何か案は?

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

c# - StackExchange.Redis で並列実行?

List<Person>Redisに挿入するためにシリアライズしている1Mアイテムストアがあります。(2.8)

10 Tasks<>それぞれが独自のセクションを取る場所に作業を分割します(List<>読み取り専用の場合はスレッドセーフですリストで複数の読み取り操作を実行しても安全です

単純化:

例:

、について ITEMS=100THREADS=10、それぞれTaskが独自の PAGE をキャプチャし、関連する範囲を処理します。

例:

  • PAGE=0対処します:0,1,2,3,4,5,6,7,8,9
  • PAGE=4対処します:40,41,42,43,44,45,46,47,48,49

大丈夫。

SE.redis に戻ります。

このパターンを実装したかったので、実行しまし:(with ITEMS=1,000,000)

ここに画像の説明を入力

私のテスト:

(ここではdbsize毎秒チェックしています):

ここに画像の説明を入力

ご覧のとおり、10 スレッドを介して 100 万件のレコードが追加されました。

高速かどうかはわかりませんが、ITEMS を から に変更すると、処理1M10M非常遅くなり、例外が発生します。

例外はforループにあります。

未処理の例外: System.AggregateException: 1 つ以上のエラーが発生しました。---

System.TimeoutException: SET urn:user>288257、inst: 1、queu e: 11、qu=0、qs=11、qc=0、wr=0/0、in=0/0 を StackExchange.Redis で実行中にタイムアウトが発生しました。1 processor, ServerEndPoint server) in c:\TeamCity\buildAgen t\work\58bc9a6df18a3782\StackExchange.Redis\StackExchange\Redis\ConnectionMultip lexer.cs:line 1722 at StackExchange.Redis.RedisBase.ExecuteSync[T](Message message, ResultProces sorc:\TeamCity\buildAgent\work\58bc9a6df 18a3782\StackExchange.Redis\StackExchange\Redis\RedisBase.cs:line 79 内のConnectionMultiplexer.ExecuteSyncImpl[T](メッセージ メッセージ、ResultProcessor 1 プロセッサ、ServerEndPoint サーバー) ... .. 。 何かキーを押すと続行します 。. .

質問:

  • 私の仕事の分担方法は正しいですか(最速)
  • どうすればより速く取得できますか(サンプルコードをいただければ幸いです)
  • この例外を解決するにはどうすればよいですか?

関連情報:

<gcAllowVeryLargeObjects enabled="true" />App.configに存在します(それ以外の場合はoutOfmemoryExceptionを取得しています)、また-x64ビット用にビルドし、16GB、ssdドライブ、i7 cpuを持っています)。

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

c# - Redis サーバーの失敗、ソケットの失敗、出力バッファーの制限の超過、どうすれば制限を増やすことができますか?

クライアントが StackExchange-Redis の C# クライアントであり、同じマシン (サーバー バージョン 2.8.4) で Windows ベースの Redis サーバーを実行して、1 台のマシンで基本的な pub/sub を実行します。

大量のデータ (32 MB よりわずかに大きい) を公開すると、以下のエラー メッセージが表示されます。エラーがクライアント側で発生したのか、サーバーによって発生したのかはわかりません。どうやら「出力バッファ制限」を超えています。どうすれば制限を増やすことができますか? そのようなペイロードのデータを時々送信する必要があります (ただし、これは標準ではなく例外です)。

これが関連しているかどうかはわかりませんが、サーバーを起動するたびに、サイズが約 32 GB (???)、ファイル名「RedisQFork_3564.dat」のファイルが開かれ、生成されます。このファイルは何に使用されますか? それはすべて私の問題に関連していますか?

サーバー上のエラー メッセージ

[10144] 23 May 17:37:29.293 # Client addr=127.0.0.1:47943 fd=9 name=DESKTOP-PC a ge=20 idle=13 flags=N db=0 sub=7 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=88 oll=1 omem=108527608 events=rw cmd=subscribe scheduled to be closed ASAP for overcomi ng of output buffer limits. [10144] 23 May 17:37:38.802 # Client addr=127.0.0.1:47948 fd=10 name=DESKTOP-PC age=9 idle=9 flags=N db=0 sub=7 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=88 oll=1 omem=109314040 events=rw cmd=subscribe scheduled to be closed ASAP for overcomin g of output buffer limits.

クライアントのエラー メッセージ

Message: Connection to Redis Server failed: SocketFailure on 127.0.0.1:6379/ Subscription, input-buffer: 4583028, outstanding: 0, last-read: 0s ago, last-wri te: 8s ago, keep-alive: 60s, pending: 0, state: ConnectedEstablished, last-heart beat: 0s ago, last-mbeat: 0s ago, global: 0s ago

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

caching - Azure Redis Cache を LRU としてセットアップする

Azure redis cacheのプレビューを使用しており、うまく機能しています。しかし、redis docs で説明されているように、LRU キャッシュとして構成する方法がわかりません。例外は

StackExchange.Redis.RedisServerException: ERR 不明なコマンド 'CONFIG'

私のコードは

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

c# - StackExchange Redis SortedSetRangeByScoreWithScoresAsync 上位 n 要素を取得

分析用の .NET アプリケーションで StackExchange.Redis API を使用しています。

Sorted Sets をデータストアとして使用しています。以下のredisコマンドに対するStackExchange.Redisの同等の方法は何ですか:

SortedSetRangeByScoreWithScoresAsync 関数を使用した StackExchange.Redis API の同等の方法は何ですか?