検索

ホームページ  >  に質問  >  本文

Redis如何回收过期数据?

服务器经常会用到redis作为缓存,有很多数据都是临时set以下,可能用过之后很久都不会再用到了(比如暂存session)那么就有几个问题了

  1. redis会自己回收清理不用的数据吗?
  2. 如果能,如何配置?
  3. 如果不能,如何防止数据累加后大量占用存储空间的问题?
大家讲道理大家讲道理2864日前751

全員に返信(2)返信します

  • 高洛峰

    高洛峰2017-04-21 11:17:38

    redis はデフォルトですべてのデータをメモリに永続的に保存します データを永続化する (ディスクに保存する) か、期限切れのキーを自動的に削除する必要がある場合は、追加のコマンドまたは構成を使用する必要があります。 ビジネス要件 (キャッシュなど) を完了するために Redis を使用する必要がある場合は、Redis の設計ルールに従う必要があります。

    あなたが後で言及した質問については:

    たとえ私が私の潔癖症のアイテムのすべてに期限切れを追加したとしても、マルチプレイヤー開発に携わる他の人も期限切れを追加することを保証できますか?誰かがそれを持っていない場合、このデータは常に保存されます

    これは私が考えていることです。通常、ビジネス ロジックは API インターフェイスにカプセル化されます。たとえば、ログイン シナリオのセッション インターフェイスは次のようになります。その後、他の人がそれを呼び出しても、それは行われません。 Redis が使用されているか、memcache が使用されているかに注意してください。すべての詳細は API 設計者のみが理解する必要があります。

    ところで、redis はデータベース内の期限切れのキーをどのようにクリーンアップするのでしょうか? 2種類に分かれます

      遅延削除
    1. : キーを操作すると (名前の取得など)、redis はまずキーがタイムアウトに関連付けられているかどうかを確認し、タイムアウトになった場合は null を返します。それ以外の場合は、対応する値を返します
    2. スケジュールされた削除
    3. : Redis には、データベース内の期限切れのキーをクリーンアップするタイムイベントがあります (Redis は、クライアントリクエストのブロックを避けるために、この操作にかかる時間を制限します)

      返事
      0
  • 天蓬老师

    天蓬老师2017-04-21 11:17:38

    expire コマンドを使用して有効期限を設定できます。有効期限を設定するために使用できるコマンドが他にもいくつかあります。詳細については、ドキュメントを参照してください。

    返事
    0
  • キャンセル返事