Laravelのキャッシュファイルを削除する

traffske

私はLaravelの初心者です。

私は自分のプロジェクトLaravel7で使用しています。

プロジェクトにキャッシュシステムがあります。

プロジェクトにキー付きのキャッシュがあります。

  • カテゴリー
  • category.id
  • category.subcategory.id
  • product.all

キャッシュを削除する機能が必要です。

私はこれを書きます:

private function deleteCache(string $keyToRemove)
{
    Cache::forget($keyToRemove);
}

ユニバーサルキャッシュの削除は可能ですか?

次のような関数が必要です

  1. 選択したキーを削除します。

    deleteCache(['category.100'、 'product.all'、 'category.1'])

  2. カテゴリ付きのすべてのキャッシュを削除します(例:category.1、category.all、category、category.tree、category.subcategory.1など)。

    deleteCache(['category。*'])

どうすれば作れますか?

エルソイ

TL:DR必要なものはデフォルトでは使用できません。選択したキャッシュドライバー(基盤となるテクノロジ)に関する技術的な」知識を必要とする、カスタマイズされたラッパーメソッドが必要です。

Laravelキャッシュサポートを含む複数の技術(ドライバー)redisdatabasefilememcachedなどのすべてのこれらのドライバは、同じインターフェイスを実装します。

namespace Illuminate\Contracts\Cache;

interface Store
{
    /**
     * Retrieve an item from the cache by key.
     *
     * @param  string|array  $key
     * @return mixed
     */
    public function get($key);

    /**
     * Retrieve multiple items from the cache by key.
     *
     * Items not found in the cache will have a null value.
     *
     * @param  array  $keys
     * @return array
     */
    public function many(array $keys);

    /**
     * Store an item in the cache for a given number of minutes.
     *
     * @param  string  $key
     * @param  mixed  $value
     * @param  float|int  $minutes
     * @return void
     */
    public function put($key, $value, $minutes);

    /**
     * Store multiple items in the cache for a given number of minutes.
     *
     * @param  array  $values
     * @param  float|int  $minutes
     * @return void
     */
    public function putMany(array $values, $minutes);

    /**
     * Increment the value of an item in the cache.
     *
     * @param  string  $key
     * @param  mixed  $value
     * @return int|bool
     */
    public function increment($key, $value = 1);

    /**
     * Decrement the value of an item in the cache.
     *
     * @param  string  $key
     * @param  mixed  $value
     * @return int|bool
     */
    public function decrement($key, $value = 1);

    /**
     * Store an item in the cache indefinitely.
     *
     * @param  string  $key
     * @param  mixed  $value
     * @return void
     */
    public function forever($key, $value);

    /**
     * Remove an item from the cache.
     *
     * @param  string  $key
     * @return bool
     */
    public function forget($key);

    /**
     * Remove all items from the cache.
     *
     * @return bool
     */
    public function flush();

    /**
     * Get the cache key prefix.
     *
     * @return string
     */
    public function getPrefix();
}

選択したドライバーに応じて、必要なものを実現するためにカスタマイズされたメソッドが必要です。

最初の質問では、次の方法が複数のキーを削除するのに役立ちます。

public function deleteCache(array $keys)
{
    foreach ($keys as $key) {
        Cache::forget($key);
    }
}

私はredisに精通しているので、その周りの例を示します。redisキャッシュドライバーとして使用する場合は、このようにメソッドを変更することをお勧めしますredisのdeleteコマンドは、一度に複数のキーを削除することをサポートしているためですこれは前のものより効果的です。

public function deleteCache(array $keys)
{
    Redis::del($keys);
}

1つのトリックは、に注意することcache prefixです。キャッシュプレフィックス(キャッシュ設定ファイルで定義)を使用している場合は、それらのプレフィックスをキーの前に追加する必要があります。

2番目の質問(カテゴリを含むすべてのキャッシュを削除する)については、いくつかの方法がありますが、パフォーマンスや本番環境に適さないものもあります。redisでは、keysまたはなどのコマンドを実行しscanてデータベースを反復処理し、以前に定義したメソッドを呼び出して、返された結果を得ることができます。

特にkeysコマンドは、細心の注意を払って本番環境でのみ使用する必要があります。

Redisは単なる例でdatabaseあり、キャッシュドライバーを使用する場合は、ケースを満たすためのメソッドを実装する必要があります。laravelがデータベースを介してそれを実装する方法(テーブル、クエリなど)と拡張メソッドがそれを使用する方法(テーブル、クエリ、列、インデックスなど)の両方に関する技術的な知識が必要になります

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

AndroidPicassoキャッシュからすべてのファイルを削除する方法

分類Dev

py.testの実行後にキャッシュされたファイルを削除する

分類Dev

pytest の実行後にキャッシュされたファイルを削除する

分類Dev

Apacheで特定のファイルのキャッシュをオフにする

分類Dev

Linuxファイルキャッシュをオフにする

分類Dev

静的ファイルを動的にキャッシュする

分類Dev

JavaScriptファイルのnginxキャッシュを無効にする

分類Dev

JavaScriptファイルのnginxキャッシュを無効にする

分類Dev

静的ファイルのブラウザキャッシュを活用する

分類Dev

htaccess / mod_expires-特定のファイルをキャッシュする

分類Dev

FirebaseStorageのファイルにキャッシュを設定する

分類Dev

実際のファイルをキャッシュに保存する

分類Dev

キャッシュにファイルを追加する際のFileNotFoundException-Hadoop-Mapreduce

分類Dev

キャッシュ時間固有のファイルを設定する方法

分類Dev

Windows:大きなファイルのキャッシュを無効にする

分類Dev

PythonでnetCDFファイルへのファイルハンドルをキャッシュする

分類Dev

htaccessまたはphpファイルを使用して静的ファイルのみをキャッシュする

分類Dev

Laravelマルチテナンシーでファイルキャッシュを使用する方法

分類Dev

capistranoキャッシュファイルを使用したLaravelのデプロイ

分類Dev

Intellijでキャッシュされたファイルテンプレートを削除する方法

分類Dev

Swift 2.3でキャッシュディレクトリからファイルを削除する方法は?

分類Dev

特定のファイルでキャッシュ/バッファを無効にする(Linux)

分類Dev

Laravel Bootstrapキャッシュ設定ファイルをクリーンアップする方法は?

分類Dev

LaravelがENVファイルをキャッシュしないようにする方法はありますか?

分類Dev

Nginx、特定のファイルのキャッシュをオフにします

分類Dev

サポートファイルにキャッシュされているファイルを削除するにはどうすればよいですか?

分類Dev

すべてのXcodeプログラムとキャッシュファイルを完全に削除するにはどうすればよいですか?

分類Dev

キャッシュするファイルをServiceWorkerに指示する方法

分類Dev

Laravel(ファイル)にキャッシュされたキーの有効期限を取得するにはどうすればよいですか?

Related 関連記事

  1. 1

    AndroidPicassoキャッシュからすべてのファイルを削除する方法

  2. 2

    py.testの実行後にキャッシュされたファイルを削除する

  3. 3

    pytest の実行後にキャッシュされたファイルを削除する

  4. 4

    Apacheで特定のファイルのキャッシュをオフにする

  5. 5

    Linuxファイルキャッシュをオフにする

  6. 6

    静的ファイルを動的にキャッシュする

  7. 7

    JavaScriptファイルのnginxキャッシュを無効にする

  8. 8

    JavaScriptファイルのnginxキャッシュを無効にする

  9. 9

    静的ファイルのブラウザキャッシュを活用する

  10. 10

    htaccess / mod_expires-特定のファイルをキャッシュする

  11. 11

    FirebaseStorageのファイルにキャッシュを設定する

  12. 12

    実際のファイルをキャッシュに保存する

  13. 13

    キャッシュにファイルを追加する際のFileNotFoundException-Hadoop-Mapreduce

  14. 14

    キャッシュ時間固有のファイルを設定する方法

  15. 15

    Windows:大きなファイルのキャッシュを無効にする

  16. 16

    PythonでnetCDFファイルへのファイルハンドルをキャッシュする

  17. 17

    htaccessまたはphpファイルを使用して静的ファイルのみをキャッシュする

  18. 18

    Laravelマルチテナンシーでファイルキャッシュを使用する方法

  19. 19

    capistranoキャッシュファイルを使用したLaravelのデプロイ

  20. 20

    Intellijでキャッシュされたファイルテンプレートを削除する方法

  21. 21

    Swift 2.3でキャッシュディレクトリからファイルを削除する方法は?

  22. 22

    特定のファイルでキャッシュ/バッファを無効にする(Linux)

  23. 23

    Laravel Bootstrapキャッシュ設定ファイルをクリーンアップする方法は?

  24. 24

    LaravelがENVファイルをキャッシュしないようにする方法はありますか?

  25. 25

    Nginx、特定のファイルのキャッシュをオフにします

  26. 26

    サポートファイルにキャッシュされているファイルを削除するにはどうすればよいですか?

  27. 27

    すべてのXcodeプログラムとキャッシュファイルを完全に削除するにはどうすればよいですか?

  28. 28

    キャッシュするファイルをServiceWorkerに指示する方法

  29. 29

    Laravel(ファイル)にキャッシュされたキーの有効期限を取得するにはどうすればよいですか?

ホットタグ

アーカイブ