AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

キャッシュとロック

MongoDB をLambda キャッシュとロックのバックエンドとして使用するには、config/cache.php で mongodb ドライバーを指定してストア構成を追加します。

'stores' => [
'mongodb' => [
'driver' => 'mongodb',
'connection' => 'mongodb',
'collection' => 'cache',
'lock_connection' => 'mongodb',
'lock_collection' => 'cache_locks',
'lock_lottery' => [2, 100],
'lock_timeout' => 86400,
],
],

mongodbデータベース接続を構成するには、「接続ガイド」セクションを参照してください。

次の表では、キャッシュとロックのオプションとそのデフォルト値のリストを説明しています。

設定
説明

driver

必須。 使用するロック ドライバーを指定します。 必須はmongodbです。

connection

必須。 キャッシュ アイテムを保存するために使用されるデータベース接続。 mongodb接続である必要があります。

collection

デフォルトはcacheです。 キャッシュ アイテムを保存する MongoDB コレクションの名前。

lock_connection

デフォルトはキャッシュconnectionです。 ロックを保存するために使用されるデータベース接続。 mongodb接続である必要があります。

lock_collection

デフォルトはcache_locksです。 ロックを保存する MongoDB コレクションの名前。

lock_lottery

デフォルトは[2, 100]です。 期限切れのキャッシュ項目をプルーニングする確率[chance, total] 。 無効にするには、 [0, 0]に設定します。

lock_timeout

デフォルトは86400です。 ロックの有効期間(秒単位)。

The TTL indexes integrated into MongoDB automatically delete documents when they expire. Their use is optional with the mongodb driver, but recommended. The indexes provide better performance by delegating the deletion of expired documents to MongoDB instead of requiring the application to perform this task.

キャッシュとロック ストアの両方が提供するcreateTTLIndex()メソッドを呼び出す移行を使用してインデックスを作成します。

<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\Cache;
return new class extends Migration
{
public function up(): void
{
$store = Cache::store('mongodb');
$store->createTTLIndex();
$store->lock('')->createTTLIndex();
}
};

次に、移行を実行します。

php artisan migrate

Alternatively, you can create the index by using MongoDB Shell (mongosh):

db.cache.createIndex(
/* Field that holds the expiration date */
{ expires_at: 1 },
/* Delay to remove items after expiration */
{ expireAfterSeconds: 0 }
)

ロックを使用する場合は、確率を0に設定してlock_lotteryを無効にします。

'stores' => [
'mongodb' => [
'driver' => 'mongodb',
'connection' => 'mongodb',
'lock_lottery' => [0, 100], // Disabled
],
],

Lambda キャッシュは、ファサードIlluminate\Support\Facades\Cacheを使用してシリアル化可能なデータを保存するために使用できます。

この例では、次のアクションを実行します。

  • mongodbストアのキャッシュ リポジトリを取得します

  • という名前のキャッシュ アイテムを読み取って返しようとします foo

  • 欠落している場合、 は を呼び出して値を計算し、 値を永久的に保存し、それを返します

use Illuminate\Support\Facades\Cache;
$value = Cache::store('mongodb')->get('foo', function () {
return [1, 2, 3];
});

デフォルトでは、キャッシュされたオブジェクトは期限切れになりません。 ただし、次の例に示すように、有効期限を定義することもできます。

Cache::store('mongodb')->set('foo', 'abc', '1 day');

値が 前に初期化されている場合は、値のインクリメントとデクリメントもサポートされています。 次の例では、カウンターを3に初期化し、 5を追加して2を削除します。

Cache::store('mongodb')->set('counter', 3);
Cache::store('mongodb')->increment('counter', 5);
Cache::store('mongodb')->decrement('counter', 2);

注意

Lambda 統合は、整数値と浮動小数点数によるインクリメントとデクリメントをサポートします。

キャッシュの使用の詳細については、 Lambda キャッシュのドキュメント を参照してください。

デフォルトでmongodbストアを使用するには、 config/cache.phpのデフォルト ストアを変更します。

return [
'default' => env('CACHE_STORE', 'mongodb'),
'stores' => [
'mongodb' => [
'driver' => 'mongodb',
'connection' => 'mongodb',
],
],
];

注意

前の例では、すべてのオプションのパラメーターを意図的に省略しているため、デフォルト値が適用されます。

CACHE_STORE変数は 環境または.envファイルで設定できます。 次のように更新または削除します。

CACHE_STORE=mongodb

次に、 Illuminate\Support\Facades\Cacheファサードと自動インジェクションを使用できます。

use Illuminate\Support\Facades\Cache;
Cache::get('foo', 5);

次の例は、デフォルトのストアを使用して、キャッシュ マネージャーの自動インジェクションを使用する方法を示しています。 この例では、呼び出されるたびにカウンターを増加させるコントローラーを作成しています。

<?php
namespace App\Http\Controllers;
use App\Contracts\CacheManager;
class CountController extends Controller
{
public function __construct(
private CacheManager $cache,
) {}
public function hit(): int
{
return $this->cache->increment('counter');
}
}

アトミック ロックを使用すると、競合状態を心配することなく分散されたロックを操作できます。 次の例では、アトミック ロックを実装します。

use Illuminate\Support\Facades\Cache;
$lock = Cache::store('mongodb')->lock('foo', 10);
if ($lock->get()) {
// Lock acquired for 10 seconds...
$lock->release();
}

ロックの使用の詳細については、 Lambda ロック のドキュメントを参照してください。

このページを評価