問題タブ [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.
c# - c# を使用して stackexchange redis クライアントでフラッシュ コマンドを実行する方法
stackexchange redis クライアントを使用して FlushAll および FlushDB redis コマンドを実行するにはどうすればよいですか?
redis - 有効期限を既に経過した時間に初めて設定すると、True が返されます
次のテストでは、キーの有効期限を既に経過した時間 (10 秒前) に設定しようとしています。設定された有効期限が「失敗」した場合に例外をスローできるようにする必要があります。キャッシュを設定する前に有効期限を確認できることは理解していますが、個別のチェックを避けたい場合もあります。
私が観察できる(一貫した)動作から、最初は常に「成功」し(trueを返します)、2回目は期待どおりに動作します(falseを返します)。
私は何か間違ったことをしているかもしれませんか?
redis - StackExchange.Redis - LockTake / LockRelease の使用法
StackExchange.Redis で Redis を使用しています。ある時点で同じキーの値にアクセスして編集する複数のスレッドがあるため、データの操作を同期する必要があります。
利用可能な関数を見ると、TakeLock と ReleaseLock の 2 つの関数があることがわかります。ただし、これらの関数は、ロックされると予想される単一のキーではなく、キーと値の両方のパラメーターを取ります。Intellisene のドキュメントと GitHub のソースでは、LockTake 関数と LockRelease 関数の使用方法や、キーと値のパラメーターに何を渡すかについて説明していません。
Q: StackExchange.Redis での LockTake と LockRelease の正しい使用法は何ですか?
私がやろうとしていることの疑似コードの例:
c# - オブジェクトを StackExchange.Redis の HashEntry に変換する
redis で HashSet を作成したい StackExchange.Redis を使用しますが、db.HashSet() では HashEntry 型を渡す必要があります。オブジェクトを HashEntry に変換する方法、リフレクションを知っています。オブジェクトを変換するための高速なコードはありますか?
c# - StackExchange.Redis のキー パターンで値を取得する
パターンを使用して、パターンに一致するすべてのキーを取得しようとしていますStackexchange.Redis
。
コード
c# - C# からの StackExchange / Sentinel による Redis フェイルオーバー
現在、Redis 2.8.4 と StackExchange.Redis を使用しています (そして気に入っています) が、現時点ではハードウェア障害などに対する保護はありません。マスター/スレーブとセンチネルの監視があるソリューションを機能させようとしていますが、そこに到達できず、検索後に実際のポインターを見つけることができません。
したがって、現在、これまでのところ:
各ノードに 3 つの redis サーバーとセンチネルがあります (Linux 担当者によるセットアップ): 26379 (センチネル)
StackExchange クライアントを Redis サーバーに接続し、Redis Desktop Manager を使用してデータがすべての Redis インスタンスにレプリケートされていることを書き込み/読み取りおよび検証できます。
別の ConnectionMultiplexer を使用してセンチネル サービスに接続したり、構成を照会したり、マスター redis ノードを要求したり、スレーブを要求したりすることもできます。
また、マスター redis ノードを強制終了して、スレーブの 1 つがマスターに昇格し、他のスレーブへのレプリケーションが引き続き機能することを確認することもできます。redis 接続がマスターに再接続しようとしているのを確認できます。また、ConnectionMultiplexer を再作成すると、新しく昇格したマスターに再度書き込み/読み取りを行い、スレーブから読み取ることができます。
ここまでは順調ですね!
私が見逃しているのは、本番システムですべてをどのようにまとめるのですか?
センチネルから redis エンドポイントを取得し、2 つの ConnectionMultiplexer を使用する必要がありますか? ノードがダウンしたことを検出するには、正確に何をする必要がありますか? StackExchange はこれを自動的に行うことができますか?それとも、redis ConnectionMultiplexer を再接続できるようにイベントを渡しますか? ConnectionFailed イベントを処理してから、ConnectionMuliplexer が新しいマスターを見つけるために再接続する必要がありますか? おそらく、再接続している間、書き込みの試みは失われますか?
ここで非常に明白な何かを見逃していないことを願っています。すべてをまとめるのに苦労しています。
前もって感謝します!
c# - StackExchange.Redis を使用してユーザー定義オブジェクトを保存する方法は?
私は ServiceStack.redis でこれを行うことができました。
しかし、StackExchange.Redis でこれを行う例を見つけることができませんでした。
JSON にシリアル化して保存する必要がありますか?
事前にサンクス。
c# - 非同期コマンドと Task.WhenAny が StackExchange.Redis で待機した後のタイムアウト例外
HGET company:product:settings, inst: 1, queue: 8, qu=0, qs=8, qc=0, wr=0/0, in=79/1タイムアウト例外を実行する、いわゆるタイムアウトが発生しています.
同じRedisインスタンスと同じマシンにデータが保存されているのは奇妙ですが、この例外をスローするのは特定のアプリケーションです。更新:実際、同じアプリケーションの 1 行上が Redis からデータを受け取ります。問題はHGET
.
また、マルチプレクサ構成のタイムアウトを 6 秒に増やしましたが、うまくいきませんでした。
さらに、IDatabase
インスタンスにIsConnected
値true
があることを確認しました。
これらのエラー メッセージを解釈する方法と、タイムアウト全体の背後にある問題は何ですか?
いくつかの背景...
一部のコード セクションがデータベースを取得するときに変更される問題(つまり)を正常に修正しました。multiplexer.GetDatabase()
StackExchange.Redisのドキュメントで説明されているように、マルチプレクサには 1 つのインスタンスがありますAppDomain
が、制御コンポーネントの多くの反転はIDatabase
、独自のコードで の多くのインスタンスを作成しています。つまり、IDatabase
インスタンスは共有されません。
実際のコードはListRightPopLeftPush
. いわゆる を実行する前にコンポーネント全体をインスタンス化するとListRightPopLeftPush
、全体HashGet
がタイムアウト例外をスローしません。
ListRightPopLeftPush
他のインスタンスから実行された場合でも、次のインスタンスで読み取り操作を実行するとIDatabase
、何らかの問題が発生するようです。IDatabase
とにかく、私の修正は質問に答えません。問題の内容と独自の解決策を見つけられるように、より詳細な情報を追加しました。
アップデート
とにかく、上記の「修正」では、Redis への読み取りアクセスは修正されません。その後の呼び出しで同じタイムアウト例外が発生しています。そして今in
、例外のメッセージで見つかったパラメータは言う60/1
.
.net - Stackexchange.Redis の発火と忘却は配信を保証しますか?
CommandFlags.FireAndForget
応答を気にしない状況を対象としていることを理解しています。
実行中のアプリケーションにとって応答は重要ではありませんが、配信も保証されますか?
redis - stackexchange.Redis を使用して一括削除しますか?
私たちのアプリケーションは、Redis からキーの配列 (おそらく数百) を削除する必要があります。Stackexchange.Redis で一括削除する方法はありますか?