Php 使用memcached时的Laravel缓存在控制器与模型中访问时不返回相同的数据
我创建了一个实用程序类,用于从api获取数据,并使用方法Php 使用memcached时的Laravel缓存在控制器与模型中访问时不返回相同的数据,php,laravel,caching,memcached,Php,Laravel,Caching,Memcached,我创建了一个实用程序类,用于从api获取数据,并使用方法cache::put()存储在缓存中。在缓存中存储数据的代码如下所示 protected static function cacheData(array $data) { foreach ($data as $id => $value) { Cache::put('ADWORDS_DATA_' . $id, $value, 60 * 6); } } 可以使用tinker中的Cache::get
cache::put()
存储在缓存中。在缓存中存储数据的代码如下所示
protected static function cacheData(array $data)
{
foreach ($data as $id => $value)
{
Cache::put('ADWORDS_DATA_' . $id, $value, 60 * 6);
}
}
可以使用tinker中的Cache::get()
检索此数据。但是,当我试图用这样的控制器方法从缓存中检索数据时
$campaigns = Auth::user()->campaigns()->with(['adwords', 'facebookAds'])->get();
$data = [];
foreach ($campaigns as $campaign)
{
$data[] = Cache::get('ADWORDS_DATA_' . $campaign->adwords->account_number);
}
查询返回null。我已经将我的应用程序环境从本地更改为登台,以防止缓存在每次请求时重置,但我无法理解为什么我存储在缓存中的数据可以通过模型方法和修补程序获得,而不能通过控制器获得
任何帮助都将不胜感激。事实证明我只是有点笨。我忘记了缓存没有被持久化到测试环境中,所以当通过测试访问路由时,我没有从缓存中得到我期望的结果。结果表明我只是有点笨。我忘记了缓存不会持久化到测试环境中,因此在通过测试访问路由时,我没有从缓存中获得预期的结果。我只是使用多种不同的驱动程序类型为您尝试了这一点。我已经用
文件
,数组
,redis
和memcached
尝试过了。我能用的唯一方法是array
。其余的似乎工作正常。也许这与权限有关,或者谁是可执行文件的所有权有关。我只是使用多种不同的驱动程序类型为您尝试了一下。我已经用文件
,数组
,redis
和memcached
尝试过了。我能用的唯一方法是array
。其余的似乎工作正常。也许这与权限有关,或者与谁拥有可执行文件有关。