3

次の操作を行うと、Redis DB に再接続できません。

  • RedisConnection「接続」と呼ばれる新しいものを作成します
  • 接続を開くconnection.Open().Wait();
  • 接続を閉じるconnection.Close(true);
  • 今私がしようとするとconnection.Open().Wait();、「接続が閉じられています」というエラーがスローされます。

接続が閉じられたことは認識していますが、再度開くことができないのはなぜですか?

接続を閉じる代わりに、Redis サーバーをシャットダウンし、クライアントにClosedイベントを発生させ、サーバーを再起動してから、connection.Open().Wait();もう一度接続を開こうとすると、同じことが起こります。「接続が閉じられました」というエラーがスローされます。

私のアプローチの何が問題になっていますか?Booksleeve との接続状態を適切に管理できないようです。

ありがとう

4

1 に答える 1

2

BookSleeve 接続を開いたり閉じたりするのは、予期される使用法ではありません。

  • マルチプレクサであるため、一度開かれ、複数の呼び出し元によって同時に使用されることが期待されます (スレッドセーフなど)。
  • 開くには、正しい操作を保証するために (ネットワーク レベルとプロトコル レベルの両方で) さまざまなハンドシェイクが必要です。
  • 閉鎖されると、進行中の状態は実行できなくなります。本当に閉じたい場合は、新しい接続を使用してください。

個人的には、実行時にシステムを再構成するか、接続が切断された場合にのみ閉じます。

于 2013-04-09T14:43:37.730 に答える