Redisにいくつかのメタデータ(追加時間、注)とともにIP(多くはありません(<50))を保存する最良の方法を知りたいです。そのリストに IP が含まれているかどうかをすばやく判断し、保存されているすべての IP を取得できるようにする必要があります。
私にはいくつかのアイデアがありますが、それらは私にはエレガント/効率的ではないようです:
- 各エントリが配列 (ip、メモ、タイムスタンプ) であるリストを使用して IP を保存します。これにより、すべての IP を簡単に取得できますが、特定の IP がリストに含まれているかどうかを判断するには、すべての IP をループする必要があります。したがって、これはすべての IP を取得するには適していますが、1 つの IP の存在を確認するにはあまり適していません。
- ハッシュ テーブルを使用して IP を保存します。ここで、IP はキーの一部であり、メタ データはハッシュ内のフィールドです。これにより、IP が非常に簡単に (exists()) 保存されているかどうかを確認できますが、保存された IP を追跡するために別の redis リストが必要になります (IP を追加/削除するときは非常に注意する必要があります)。保存されているすべての IP とそのメタ情報を取得するには、1 + count(ips) 操作を実行する必要があります。したがって、この方法は 1 つの IP の存在を確認するには適していますが、すべての IP を取得するには適していません。
redisでこれを行う他の方法はありますか、または上記のアプローチのいずれかを使用する必要がありますか(そうであれば、どれが最適ですか)?