我已将memcached选为我的缓存驱动程序。然而,遇到了一个奇怪的问题。
我一直在做:
Cache::put('name','John',15);
如果我给出
,请在下一行var_dump(Cache::get('name'))
它告诉我:
bool(false)
无法理解这里出了什么问题。我在我的localhost上的端口11211上运行memcached,我可以telnet。
phpinfo()显示已安装php-memcached库。
我的config / cache.php文件显示为:
'default' => env('CACHE_DRIVER', 'memcached'),
'stores' => [
'apc' => [
'driver' => 'apc',
],
'array' => [
'driver' => 'array',
],
'database' => [
'driver' => 'database',
'table' => env('CACHE_DATABASE_TABLE', 'cache'),
'connection' => env('CACHE_DATABASE_CONNECTION', null),
],
'file' => [
'driver' => 'file',
'path' => storage_path('framework/cache'),
],
'memcached' => [
'driver' => 'memcached',
'servers' => [
[
'host' => env('MEMCACHED_HOST', '127.0.0.1'), 'port' => env('MEMCACHED_PORT', 11211), 'weight' => 100,
],
],
],
'redis' => [
'driver' => 'redis',
'connection' => env('CACHE_REDIS_CONNECTION', 'default'),
],
],
'prefix' => env('CACHE_PREFIX', 'laravel'),
请帮忙。
答案 0 :(得分:1)
你有一个错字。在缓存中设置值的方法是put()
,但您使用了get()
两次。试试这个:
Cache::put('name','John',15);
答案 1 :(得分:0)
经过一整天的谷歌搜索,我找到了解决方案。
似乎我必须将以下行添加到 bootstrap / app.php :
$app->configure('cache');
另外,请注意,如果您在VM / docker容器内运行应用程序,则需要提供Host ip。
答案 2 :(得分:0)
我花了3个小时弄清楚为什么我的代码无法正常工作并且无法从缓存中获取数据,最后我想出了原因:
Cache::put('name','John',15);
当您执行此操作时,仅将其放在高速缓存上15秒或15毫秒,具体取决于您对代码的配置。
还必须检查是否对存储文件夹具有权限:
sudo CHOWN -R www:data:www:data storage
您可以验证是否手动将数据插入到缓存中,并且会看到您已经缓存了该数据,但到期日期ttl已到期。
祝你好运