2

「socket.set()」を使用すると、Redis データベースにその情報が保存されるように、Socket.IO を RedisStore に接続しました。

これは、ソケットの一意の識別子であるとしか想定できない何らかの形式のランダムキーを作成することによって行われます。

私の問題はこれです。手動で削除しない限り、保存したこのデータは決して削除されません。すべての新しいソケットは保存されて保存されますが、切断時に何かをしない限り、古いソケットは決して削除されません。ただし、これは、ノードを再起動したり、クラッシュした場合などに、このデータが永久に保持されることを意味します。

私の目標は、古いキーのデータベースをクリーンアップする場所を見つけることです。私の問題は、これらの古いキーを見つける良い方法を見つけるのに苦労していることです.

私が考えた解決策のアイデアは、これらのキー名を何らかのセットに保存することです。その後、それらを反復処理して、起動時にまだ使用されているかどうかを確認できます。ただし、私が知る限り、使用されているキーを見つける方法はありません。

もう 1 つは、すべてのキーを試行して反復できることでしたが、それは悪い考えのようです。また、特定の長さのキーの使用を特に避けない限り、彼らが使用するキーと私が使用するキーを適切に区別することもできません。

私の質問は、誰かが私のデータベースをきれいに保つ良い方法を持っているかどうか、またはsocket.ioが私のデータベースで使用しているキーをどのように追跡できるかということです.

ありがとう、サミー

ps さらに情報が必要な場合、または明確でない場合は、教えてください。説明できるよう最善を尽くします。

4

1 に答える 1

1

使用されていないキーを削除するだけで問題が解決しない場合は、Redis のttlexpireを使用しないでください。使用ごとに有効期限の値を設定したり、非常に高く設定したりできます。たとえば 1 週間使用されなかったものは、自動的にバックグラウンドで削除されます。

于 2013-07-08T02:27:03.123 に答える