sistem caching
- Daftar pemanduEvent
-
- menyediakan API yang kaya dan bersatu untuk pelbagai cache bahagian belakang, dan maklumat konfigurasinya terletak dalam fail
- dan Redis . Fail konfigurasi cache juga mengandungi pelbagai pilihan lain, yang didokumenkan dalam fail, jadi pastikan anda membacanya. Secara lalai, Laravel dikonfigurasikan untuk menggunakan pemacu cache
- Prasyarat untuk memandu
Pangkalan Data
Apabila menggunakan pemacu cache
pangkalan data
, anda perlu mengkonfigurasi jadual untuk menyimpan data cache. Berikut ialah contoh pengisytiharanSkema
untuk membina struktur jadual data cache:database
缓存驱动时,你需要配置一个表来存放缓存数据。下面是构建缓存数据表结构的Schema
声明示例:Schema::create('cache', function ($table) { $table->string('key')->unique(); $table->text('value'); $table->integer('expiration'); });
{tip} 你也可以使用 Artisan 命令
php artisan cache:table
来生成合适的迁移。Memcached
使用 Memcached 驱动需要安装 Memcached PECL 扩展包 。你可以把所有的 Memcached 服务器都列在
config/cache.php
配置文件中:'memcached' => [ [ 'host' => '127.0.0.1', 'port' => 11211, 'weight' => 100 ], ],
你可以将
host
选项设置为 UNIX socket 路径。如果你这样配置了,port
选项应该设置为0
:'memcached' => [ [ 'host' => '/var/run/memcached/memcached.sock', 'port' => 0, 'weight' => 100 ], ],
Redis
在使用 Laravel 的 Redis 缓存之前,你需要通过 Composer 安装
predis/predis
扩展包 (~1.0) 或者使用 PECL 安装 PhpRedis PHP 扩展。如需了解更多关于 Redis 的配置,请参考 Laravel Redis 文档。
缓存的使用
获取缓存实例
IlluminateContractsCacheFactory
和IlluminateContractsCacheRepository
契约 提供了 Laravel 缓存服务的访问机制。Factory
契约为你的应用程序定义了访问所有缓存驱动的机制。Repository
契约通常是由你的cache
配置文件指定的默认缓存驱动实现的。不过,你也可以使用
Cache
Facade,我们将在后续的文档中介绍。Cache
Facade 为 Laravel 缓存契约底层的实现提供了方便又简洁的方法:<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Cache; class UserController extends Controller{ /** * 展示应用的所有用户列表。 * * @return Response */ public function index() { $value = Cache::get('key'); // } }
访问多个缓存存储
使用
Cache
Facade,你可以通过store
方法来访问各种缓存存储。传入store
方法的键应该对应cache
配置信息文件中的stores
$value = Cache::store('file')->get('foo'); Cache::store('redis')->put('bar', 'baz', 600); // 10 分钟
{tip} Anda juga boleh menggunakan perintah Artisan
php artisan cache:table code> untuk menjana migrasi yang sesuai.
MemcachedMenggunakan pemacu Memcached memerlukan pemasangan Pakej sambungan PECL Memcached. Anda boleh menyenaraikan semua pelayan Memcached dalam fail konfigurasiconfig/cache.php
: 🎜$value = Cache::get('key'); $value = Cache::get('key', 'default');
🎜 Anda boleh menetapkan pilihanhost
kepada laluan soket UNIX. Jika anda mengkonfigurasinya dengan cara ini, pilihanport
hendaklah ditetapkan kepada0
: 🎜$value = Cache::get('key', function () { return DB::table(...)->get(); });
🎜🎜Redis 🎜🎜 dalam Sebelum menggunakan cache Redis Laravel, anda perlu memasang pakej sambunganpredis/predis
(~1.0) melalui Composer atau gunakan PECL untuk memasang sambungan PHP PhpRedis. 🎜🎜Untuk mengetahui lebih lanjut tentang konfigurasi Redis, sila rujuk dokumentasi Laravel Redis. 🎜🎜🎜🎜🎜Penggunaan cache
🎜🎜🎜🎜Dapatkan contoh cache
🎜IlluminateContractsCacheFactory
danIlluminateContractsCacheRepository
Kontrak itu menyediakan mekanisme akses untuk perkhidmatan cache Laravel. KontrakFactory
mentakrifkan mekanisme untuk aplikasi anda mengakses semua pemacu cache. KontrakRepositori
biasanya dilaksanakan oleh pemacu cache lalai yang dinyatakan dalam fail konfigurasicache
anda. 🎜🎜Walau bagaimanapun, anda juga boleh menggunakan FasadCache, yang akan kami perkenalkan dalam dokumen seterusnya. Cache Fasad menyediakan kaedah yang mudah dan ringkas untuk pelaksanaan asas kontrak cache Laravel: 🎜 if (Cache::has('key')) { // }
🎜🎜Akses berbilang stor cache🎜🎜 Menggunakan FasadCache
, anda boleh mengakses pelbagai stor cache melalui kaedahstore
. Kunci yang dihantar ke kaedahstore
hendaklah sepadan dengan salah satu kedai yang disenaraikan dalam tatasusunan konfigurasistores
dalam fail maklumat konfigurasicache
: 🎜Cache::increment('key'); Cache::increment('key', $amount); Cache::decrement('key'); Cache::decrement('key', $amount);
🎜🎜 🎜🎜🎜🎜Dapatkan data daripada cache
Cache Kaedah get
Facade ialah kaedah yang digunakan untuk mendapatkan data daripada cache. Jika data tidak wujud dalam cache, kaedah akan mengembalikannull
. Seperti yang anda bayangkan, anda juga boleh menghantar parameter kedua kepada kaedahget
, yang menentukan nilai lalai yang anda mahu dikembalikan jika data yang dicari tidak wujud:Cache
Facade 的get
方法是用来从缓存中获取数据的方法。如果该数据在缓存中不存在,那么该方法将返回null
。正如你想的那样,你也可以向get
方法传递第二个参数,用来指定如果查找的数据不存在时你希望返回的默认值:$value = Cache::remember('users', $seconds, function () { return DB::table('users')->get(); });
你甚至可以传递
Closure
作为默认值。如果指定的数据在缓存中不存在,将返回Closure
的结果。传递闭包的方法允许你从数据库或其他外部服务中获取默认值:$value = Cache::rememberForever('users', function () { return DB::table('users')->get(); });
检查缓存项是否存在
has
方法可以用于判断缓存项是否存在。如果为null
或false
则该方法将会返回false
:$value = Cache::pull('key');
递增与递减值
increment
和decrement
方法可以用来调整缓存中整数项的值。这两个方法都可以传入第二个可选参数,这个参数用来指明要递增或递减的数量:Cache::put('key', 'value', $seconds);
获取和存储
有时你可能想从缓存中获取一个数据,而当请求的缓存项不存在时,程序能为你存储一个默认值。例如,你可能想从缓存中获取所有用户,当缓存中不存在这些用户时,程序将从数据库将这些用户取出并放入缓存。你可以使用
Cache::remember
方法来实现:Cache::put('key', 'value');
如果缓存中不存在你想要的数据时,则传递给
remember
方法的闭包
将被执行,然后将其结果返回并放置到缓存中。你可以使用
rememberForever
方法从缓存中获取数据或者永久存储它:Cache::put('key', 'value', now()->addMinutes(10));
获取和删除
如果你需要从缓存中获取到数据之后再删除它,你可以使用
pull
方法。和get
方法一样,如果缓存不存在,则返回null
:Cache::add('key', 'value', $seconds);
在缓存中存储数据
你可以使用
Cache
Facade 的put
方法将数据存储到缓存中:Cache::forever('key', 'value');
如果缓存的过期时间没有传递给
put
方法, 则缓存将永久有效:Cache::forget('key');
除了以整数形式传递过期时间的秒数,你还可以传递一个
DateTime
实例来表示该数据的过期时间:Cache::put('key', 'value', 0); Cache::put('key', 'value', -5);
只存储没有的数据
add
方法将只存储缓存中不存在的数据。如果存储成功,将返回true
,否则返回false
Cache::flush();
Anda juga boleh lulus < kod>Penutupan sebagai nilai lalai. Jika data yang ditentukan tidak wujud dalam cache, hasilPenutupan
akan dikembalikan. Melepasi kaedah penutupan membolehkan anda mendapatkan nilai lalai daripada pangkalan data atau perkhidmatan luaran lain:use Illuminate\Support\Facades\Cache; $lock = Cache::lock('foo', 10); if ($lock->get()) { //获取锁定10秒... $lock->release(); }
Semak jika item cache wujud
🎜 Kaedah < Kod>ada boleh digunakan untuk menentukan sama ada item cache wujud. Jika ianull
ataufalse
, kaedah ini akan mengembalikanfalse
: 🎜Cache::lock('foo')->get(function () { // 获取无限期锁并自动释放... });
🎜Nilai kenaikan dan pengurangan
🎜 Kaedahkenaikan dan penurunan
boleh digunakan untuk melaraskan nilai item integer dalam cache. Kedua-dua kaedah boleh lulus dalam parameter pilihan kedua, yang digunakan untuk menentukan jumlah yang akan dinaikkan atau dikurangkan: 🎜use Illuminate\Contracts\Cache\LockTimeoutException; $lock = Cache::lock('foo', 10);try { $lock->block(5); // 等待最多5秒后获取的锁... } catch (LockTimeoutException $e) { // 无法获取锁... } finally { optional($lock)->release(); } Cache::lock('foo', 10)->block(5, function () { // 等待最多5秒后获取的锁... });
🎜Dapatkan jumlah Storan h4>🎜Kadangkala anda mungkin ingin mendapatkan data daripada cache, dan apabila item cache yang diminta tidak wujud, atur cara boleh menyimpan nilai lalai untuk anda. Sebagai contoh, anda mungkin ingin mendapatkan semua pengguna daripada cache Apabila pengguna ini tidak wujud dalam cache, program akan mengambil pengguna ini daripada pangkalan data dan memasukkannya ke dalam cache. Anda boleh menggunakan kaedah
Cache::remember
untuk mencapai ini: 🎜// 控制器里面... $podcast = Podcast::find($id); if ($lock = Cache::lock('foo', 120)->get()) { ProcessPodcast::dispatch($podcast, $lock->owner()); } // ProcessPodcast Job 里面... Cache::restoreLock('foo', $this->owner)->release();
🎜Jika data yang anda inginkan tidak wujud dalam cache, hantarkannya kepenutupan
ingat< /code> kaedah Pakej
akan dilaksanakan dan hasilnya dikembalikan dan diletakkan ke dalam cache. 🎜🎜Anda boleh menggunakan kaedahrememberForever
untuk mendapatkan data daripada cache atau menyimpannya secara kekal: 🎜Cache::lock('foo')->forceRelease();
🎜Dapatkan dan padam h4>🎜Jika anda perlu mendapatkan data daripada cache dan kemudian memadamkannya, anda boleh menggunakan kaedah
tarik
. Seperti kaedahget
, jika cache tidak wujud,null
dikembalikan: 🎜$value = cache('key');
🎜< /a >🎜🎜🎜Simpan data dalam cache🎜🎜Anda boleh menggunakan kaedahput
bagiCache
Fasad untuk meletakkan data Simpan dalam cache: 🎜cache(['key' => 'value'], $seconds); cache(['key' => 'value'], now()->addMinutes(10));
🎜 Jika masa tamat cache tidak dihantar ke kaedahput
, cache akan sah selama-lamanya: 🎜cache()->remember('users', $seconds, function () { return DB::table('users')->get(); });
🎜Selain melepasi tamat tempoh masa dalam saat sebagai integer, anda juga boleh menghantar contohDateTime
untuk mewakili masa tamat tempoh data: 🎜Cache::tags(['people', 'artists'])->put('John', $john, $seconds); Cache::tags(['people', 'authors'])->put('Anne', $anne, $seconds);
🎜Hanya simpan data yang tidak wujud
🎜< Kaedah kod>tambah hanya akan menyimpan data yang tidak wujud dalam cache. Jika storan berjaya,true
akan dikembalikan, jika tidakfalse
akan dikembalikan: 🎜$john = Cache::tags(['people', 'artists'])->get('John'); $anne = Cache::tags(['people', 'authors'])->get('Anne');
🎜🎜Storan kekal data
Kaedah
selamanya boleh digunakan untuk menyimpan data secara berterusan dalam cache. Kerana data ini tidak akan luput, ia mesti dipadamkan secara manual daripada cache melalui kaedah lupa
:forever
方法可用于持久化将数据存储到缓存中。因为这些数据不会过期,所以必须通过forget
方法从缓存中手动删除它们:Cache::tags(['people', 'authors'])->flush();
{tip} 如果你使用 Memcached 驱动,当缓存数据达到存储上限时,「永久存储」 的数据可能会被删除。
删除缓存中的数据
你可以使用
forget
方法从缓存中删除这些数据:Cache::tags('authors')->flush();
你也可以通过提供零或者负的 TTL 值删除这些数据:
<?php namespace App\Extensions; use Illuminate\Contracts\Cache\Store; class MongoStore implements Store{ public function get($key) {} public function many(array $keys); public function put($key, $value, $seconds) {} public function putMany(array $values, $seconds); public function increment($key, $value = 1) {} public function decrement($key, $value = 1) {} public function forever($key, $value) {} public function forget($key) {} public function flush() {} public function getPrefix() {} }
你可以使用
flush
方法清空所有的缓存:Cache::extend('mongo', function ($app) { return Cache::repository(new MongoStore); });
{note} 清空缓存的方法并不会考虑缓存前缀,会将缓存中的所有内容删除。因此在清除与其它应用程序共享的缓存时,请慎重考虑。
原子锁
{note} 要使用该特性,你的应用必须使用
memcached
,dynamodb
或redis
缓存驱动作为你应用的默认缓存驱动。此外,所有服务器必须与同一中央缓存服务器进行通信。原子锁允许对分布式锁进行操作而不必担心竞争条件。例如, Laravel Forge 使用原子锁来确保在一台服务器上每次只有一个远程任务在执行。你可以使用
Cache::lock
方法来创建和管理锁:<?php namespace App\Providers;use App\Extensions\MongoStore; use Illuminate\Support\Facades\Cache; use Illuminate\Support\ServiceProvider; class CacheServiceProvider extends ServiceProvider{ /** * 执行服务的注册后引导。 * * @return void */ public function boot() { Cache::extend('mongo', function ($app) { return Cache::repository(new MongoStore); }); } /** * 在容器中注册绑定。 * * @return void */ public function register() { // } }
get
方法也可以接收一个闭包。在闭包执行之后,Laravel 将会自动释放锁:/** * 应用的事件监听器映射 * * @var array */ protected $listen = [ 'Illuminate\Cache\Events\CacheHit' => [ 'App\Listeners\LogCacheHit', ], 'Illuminate\Cache\Events\CacheMissed' => [ 'App\Listeners\LogCacheMissed', ], 'Illuminate\Cache\Events\KeyForgotten' => [ 'App\Listeners\LogKeyForgotten', ], 'Illuminate\Cache\Events\KeyWritten' => [ 'App\Listeners\LogKeyWritten', ], ];
如果你在请求时锁无法使用,你可以控制 Laravel 等待指定的秒数。如果在指定的时间限制内无法获取锁,则会抛出
rrreeeIlluminateContractsCacheLockTimeoutException
:管理跨进程的锁
有时,你希望在一个进程中获取锁并在另外一个进程中释放它。例如,你可以在 Web 请求期间获取锁,并希望在该请求触发的队列作业结束时释放锁。在这种情况下,你应该将锁的作用域「owner token」传递给队列作业,以便作业可以使用给定的 token 重新实例化锁:
rrreee如果你想在不尊重当前锁的所有者的情况下释放锁,你可以使用
forceRelease
rrreee{tip} Jika anda menggunakan pemacu Memcached, apabila data cache mencapai storan had, " Data yang disimpan secara kekal boleh dipadamkan.
Anda boleh memadamkan data ini daripada cache menggunakan kaedahMengalih keluar data daripada cache h3>
lupa: 🎜rrreee🎜Anda juga boleh memadamkan data ini dengan memberikan nilai TTL sifar atau negatif: 🎜rrreee🎜Anda boleh menggunakan flush Kaedah untuk mengosongkan semua cache: 🎜rrreee 🎜{note} Kaedah mengosongkan cache tidak mengambil kira awalan cache dan akan memadam semua kandungan dalam cache. Jadi sila pertimbangkan dengan teliti apabila mengosongkan cache yang dikongsi dengan aplikasi lain. 🎜
🎜🎜🎜🎜Atomic Locks
🎜{note} Untuk menggunakan ciri ini, aplikasi anda mesti menggunakan pemacu cache
🎜Kunci atom membenarkan operasi pada kunci yang diedarkan tanpa perlu risau tentang keadaan perlumbaan. Contohnya, Laravel Forge🎜 menggunakan kunci atom untuk memastikan bahawa hanya satu tugas jauh dilaksanakan pada pelayan pada satu masa. Anda boleh menggunakan kaedahmemcached
,dynamodb
atauredis
sebagai pemacu cache lalai aplikasi anda. Selain itu, semua pelayan mesti berkomunikasi dengan pelayan cache pusat yang sama. 🎜Cache::lock
untuk mencipta dan mengurus kunci: 🎜rrreee🎜 Kaedahget
juga boleh menerima penutupan. Selepas penutupan dilaksanakan, Laravel akan melepaskan kunci secara automatik: 🎜rrreee🎜 Jika kunci tidak tersedia pada masa permintaan anda, anda boleh mengawal Laravel untuk menunggu beberapa saat yang ditentukan. Jika kunci tidak boleh diperoleh dalam had masa yang ditentukan,IlluminateContractsCacheLockTimeoutException
akan dilemparkan: 🎜rrreee🎜🎜Urus kunci rentas proses🎜🎜 Kadangkala, anda ingin memperoleh kunci dalam satu proses dan melepaskannya dalam proses lain. Sebagai contoh, anda boleh memperoleh kunci semasa permintaan web dan ingin melepaskan kunci apabila kerja baris gilir yang dicetuskan oleh permintaan itu tamat. Dalam kes ini, anda harus menyerahkan skop kunci "token pemilik" kepada kerja baris gilir supaya kerja itu boleh menghidupkan semula kunci dengan token yang diberikan: 🎜rrreee🎜 Jika anda mahu melakukan ini tanpa menghormati pemilik kunci semasa Untuk melepaskan kunci, anda boleh menggunakan kaedahforceRelease
: 🎜rrreee🎜🎜🎜🎜🎜🎜Fungsi pembantu cache
Selain menggunakan kontrak
rrreeeCache
Fasad atau Cache, anda juga boleh menggunakan fungsi helper globalcache
untuk mendapatkan dan menyimpan data cache. Apabila fungsicache
hanya menerima parameter rentetan, ia akan mengembalikan nilai yang sepadan dengan kunci yang diberikan:Cache
Facade 或 Cache 契约 外,你还可以使用全局辅助函数cache
来获取和保存缓存数据。当cache
函数只接收一个字符串参数的时候,它将会返回给定键对应的值:如果你向函数提供了一组键值对和过期时间,它将会在指定时间内缓存数据:
rrreee当
rrreeecache
函数在没有任何参数的情况下被调用时,它返回一个IlluminateContractsCacheFactory
实现的实例,允许你调用其它缓存方法:{tip} 如果在测试中使用全局辅助函数
cache
,你可以使用Cache::shouldReceive
方法就像 测试 Facade。缓存标记
{note} 缓存标记不支持使用
file
和database
缓存驱动。此外,当使用多个缓存标记的缓存设置为「永久」时,类似memcached
的缓存驱动性能最佳,它会自动清除旧的记录。写入被标记的缓存数据
缓存标记允许你给缓存相关进行标记,以便后续清除这些缓存值。你可以通过传入标记名称的有序数组来访问标记的缓存。例如,我们可以使用标记的同时使用
rrreeeput
方法设置缓存。访问被标记的缓存数据
若要获取一个被标记的缓存数据,请将相同的有序标记数组传递给
rrreeetags
方法,然后调用get
方法来获取你要检索的键:移除被标记的缓存数据
你可以清空有单个标记或是一组标记的所有缓存数据。例如,下面的语句会被标记为
rrreeepeople
,authors
或两者都有的缓存。所以,Anne
和John
都会从缓存中被删除:相反,下面的语句只会删除被标记
Jika anda menyediakan fungsi dengan satu set pasangan nilai kunci dan masa tamat tempoh, ia will Akan cache data untuk masa yang ditentukan:authors
的缓存,所以Anne
会被删除,但John
rrreee{tip} Jika anda menggunakan fungsi pembantu global
cache
dalam ujian anda, anda boleh menggunakan kaedahCache::shouldReceive
sama seperti ujian Fasad.{nota} Penggunaan teg cache tidak disokong pemacu cache
fail
danpangkalan data
. Selain itu, pemacu cache sepertimemcached
berprestasi terbaik apabila cache yang menggunakan berbilang teg cache ditetapkan kepada "berterusan", yang mengosongkan rekod lama secara automatik. 🎜🎜🎜🎜Write tag data cache🎜🎜Cache tag Membolehkan anda untuk tandakan nilai cache supaya ia boleh dikosongkan kemudian. Anda boleh mengakses cache tag dengan menghantar tatasusunan nama tag yang tersusun. Sebagai contoh, kita boleh menetapkan cache menggunakan kaedahlet
bersama dengan tag. 🎜rrreee🎜🎜🎜🎜🎜Akses data cache yang ditandakan🎜🎜Untuk mendapatkan cache yang ditandakan Kepada data cache , hantarkan tatasusunan teg yang sama kepada kaedahtag
, kemudian panggil kaedahget
untuk mendapatkan kunci yang anda mahu dapatkan semula: 🎜rrreee🎜🎜🎜🎜🎜Mengalih keluar data cache berteg🎜🎜Anda boleh mengosongkan teg tunggal atau sekumpulan teg Semua data cache. Sebagai contoh, pernyataan berikut akan dicache sebagai🎜orang
,pengarang
atau kedua-duanya. Oleh itu, kedua-duaAnne
danJohn
akan dipadamkan daripada cache: 🎜rrreee🎜Sebaliknya, pernyataan berikut hanya akan memadamkan cache yang bertandaauthors
, JadiAnne
akan dipadamkan, tetapiJohn
tidak akan: 🎜rrreee🎜🎜🎜🎜🎜🎜🎜Tambah pemacu cache tersuai🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜Menulis pemandu
Untuk mencipta pemacu cache tersuai, anda perlu melaksanakan kontrak
rrreeeIlluminateContractsCacheStore
terlebih dahulu. Oleh itu, pelaksanaan cache MongoDB akan kelihatan seperti ini:IlluminateContractsCacheStore
契约。因此, MongoDB 的缓存实现看起来会像这样:我们只需要 MongoDB 的连接来实现这些方法。关于如何实现这些方法的实例,可以参阅框架源代码中的
rrreeeIlluminateCacheMemcachedStore
。一旦完成契约额实现后,就可以像下面这样完成自定义驱动的注册了。{tip} 如果你不知道将缓存驱动代码放在哪,你可以在
app
目录下创建一个Extensions
命名空间。然而,Laravel 并没有硬性规定应用程序的结构,你可以根据自己的喜好自由组织你的应用程序。注册驱动
要使用 Laravel 来注册自定义缓存驱动,就要在
rrreeeCache
Facade 上使用extend
方法。 对Cache::extend
的调用可以在新的 Laravel 应用程序中自带的AppProvidersAppServiceProvider
的boot
方法中完成,或者你也可以创建自己的服务提供者来存放扩展,只是不要忘记在config/app.php
的 provider 数组中注册服务提供者:传递给
extend
方法的第一个参数是驱动程序的名称。这将与config/cache.php
配置文件的driver
选项相对应。第二个参数是一个应该返回IlluminateCacheRepository
实例的闭包。该闭包将传递一个 服务容器 的$app
实例。一旦你的扩展程序注册后,需要将
config/cache.php
配置文件中的driver
选项更新为你的扩展名称。事件
要在每次缓存操作时执行代码,你可以监听缓存触发的 事件 。通常,你应该将这些事件监听器放在
Kami hanya memerlukan sambungan MongoDB untuk melaksanakan kaedah ini. Untuk contoh cara melaksanakan kaedah ini, lihatEventServiceProvider
rrreeeIlluminateCacheMemcachedStore
dalam kod sumber rangka kerja. Setelah kontrak selesai, anda boleh melengkapkan pendaftaran pemandu tersuai seperti berikut.🎜🎜Mendaftarkan pemandu🎜🎜Untuk menggunakan Laravel untuk mendaftar cache tersuai pemandu , anda perlu menggunakan kaedahlanjutkan
pada FasadCache
. Panggilan keCache::extend
boleh dilakukan dalam kaedahboot
AppProvidersAppServiceProvider
yang disertakan dengan aplikasi Laravel baharu, atau anda boleh Cipta pembekal perkhidmatan anda sendiri untuk menyimpan sambungan, cuma jangan lupa untuk mendaftarkan pembekal perkhidmatan dalam tatasusunan penyediaconfig/app.php
: 🎜rrreee🎜 dihantar kelanjutkan
kaedah Parameter pertama ialah nama pemandu. Ini akan sepadan dengan pilihandriver
bagi fail konfigurasiconfig/cache.php
. Parameter kedua ialah penutupan yang sepatutnya mengembalikan contohIlluminateCacheRepository
. Penutupan akan diberikan contoh$app
bagi bekas perkhidmatan. 🎜🎜Setelah sambungan anda didaftarkan, anda perlu mengemas kini pilihandriver
dalam fail konfigurasiconfig/cache.php
kepada nama sambungan anda. 🎜🎜🎜🎜🎜Acara
🎜Untuk melaksanakan kod pada setiap operasi cache, anda boleh mendengar Cache yang dicetuskan peristiwa. Biasanya, anda harus meletakkan pendengar acara ini dalamEventServiceProvider
: 🎜rrreee🎜Artikel ini mula-mula muncul di tapak web 🎜LearnKu.com🎜. 🎜🎜
config/cache.php
. Dalam fail ini anda boleh menentukan pemacu cache yang digunakan oleh aplikasi secara lalai. Laravel menyokong cache hujung belakang yang popular seperti Memcachedfail
, yang menyimpan objek cache bersiri dalam sistem fail. Untuk aplikasi yang lebih besar, adalah disyorkan agar anda menggunakan pemacu yang lebih berkuasa seperti Memcached atau Redis. Anda juga boleh mengkonfigurasi berbilang konfigurasi cache untuk pemacu yang sama.