服务器经常会用到redis作为缓存,有很多数据都是临时set以下,可能用过之后很久都不会再用到了(比如暂存session)那么就有几个问题了
光阴似箭催人老,日月如移越少年。
redis はデフォルトですべてのデータをメモリに永続的に保存します データを永続化する (ディスクに保存する) か、期限切れのキーを自動的に削除する必要がある場合は、追加のコマンドまたは構成を使用する必要があります。 ビジネス要件 (キャッシュなど) を完了するために Redis を使用する必要がある場合は、Redis の設計ルールに従う必要があります。
たとえ私が私の潔癖症のアイテムのすべてに期限切れを追加したとしても、マルチプレイヤー開発に携わる他の人も期限切れを追加することを保証できますか?誰かがそれを持っていない場合、このデータは常に保存されます
ところで、redis はデータベース内の期限切れのキーをどのようにクリーンアップするのでしょうか? 2種類に分かれます
expire コマンドを使用して有効期限を設定できます。有効期限を設定するために使用できるコマンドが他にもいくつかあります。詳細については、ドキュメントを参照してください。
redis はデフォルトですべてのデータをメモリに永続的に保存します データを永続化する (ディスクに保存する) か、期限切れのキーを自動的に削除する必要がある場合は、追加のコマンドまたは構成を使用する必要があります。 ビジネス要件 (キャッシュなど) を完了するために Redis を使用する必要がある場合は、Redis の設計ルールに従う必要があります。
あなたが後で言及した質問については:たとえ私が私の潔癖症のアイテムのすべてに期限切れを追加したとしても、マルチプレイヤー開発に携わる他の人も期限切れを追加することを保証できますか?誰かがそれを持っていない場合、このデータは常に保存されます
これは私が考えていることです。通常、ビジネス ロジックは API インターフェイスにカプセル化されます。たとえば、ログイン シナリオのセッション インターフェイスは次のようになります。その後、他の人がそれを呼び出しても、それは行われません。 Redis が使用されているか、memcache が使用されているかに注意してください。すべての詳細は API 設計者のみが理解する必要があります。ところで、redis はデータベース内の期限切れのキーをどのようにクリーンアップするのでしょうか? 2種類に分かれます
遅延削除- : キーを操作すると (名前の取得など)、redis はまずキーがタイムアウトに関連付けられているかどうかを確認し、タイムアウトになった場合は null を返します。それ以外の場合は、対応する値を返します
スケジュールされた削除- : Redis には、データベース内の期限切れのキーをクリーンアップするタイムイベントがあります (Redis は、クライアントリクエストのブロックを避けるために、この操作にかかる時間を制限します)
expire コマンドを使用して有効期限を設定できます。有効期限を設定するために使用できるコマンドが他にもいくつかあります。詳細については、ドキュメントを参照してください。