【问题标题】:laravel memcached as the CACHE_DRIVER doesn't seem to worklaravel memcached 作为 CACHE_DRIVER 似乎不起作用
【发布时间】:2018-02-04 00:19:51
【问题描述】:

我已选择 memcached 作为我的缓存驱动程序。但是,遇到了一个奇怪的问题。

一旦我这样做了:

Cache::put('name','John',15);

如果我给的话,在下一行

var_dump(Cache::get('name'))

它告诉我:

bool(false)

无法理解这里出了什么问题。我在我的本地主机上的端口 11211 上运行了 memcached,我可以远程登录。

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'),

请帮忙。

【问题讨论】:

    标签: php laravel caching memcached lumen


    【解决方案1】:

    你有一个错字。在缓存中设置值的方法是put(),但是您使用了两次get()。试试这个:

    Cache::put('name','John',15);
    

    【讨论】:

    • 抱歉,这是问题本身的错字。我只使用put,而不是get。
    【解决方案2】:

    经过一整天的谷歌搜索,我终于找到了解决方案。

    看来我必须在 bootstrap/app.php 中添加以下行:

    $app->configure('cache');
    

    另外,请注意,如果您在 VM/docker 容器中运行应用程序,则需要提供主机 ip。

    【讨论】:

    • 我的应用程序在 heroku 上的情况相同。当我尝试关注 Cache::put('name','John',15); Cache::get('name') 它显示 => John 但只要我评论 //Cache::put('name','John',15); Cache::get('name') 什么也不显示 如果有任何想法请告诉我 Config: 'memcached' => [ 'driver' => 'memcached', 'servers' => [ [ 'host' => env(' MEMCACHED_HOST', '127.0.0.1'), 'port' => env('MEMCACHED_PORT', 11211), 'weight' => 100, ], ], ],
    • 我已经尝试过您的解决方案,但它只是破坏了网站,这是一个链接:buynow.liqstage.co.za
    【解决方案3】:

    我花了 3 个小时弄清楚为什么我的代码无法工作并且无法从缓存中获取数据,最后我找到了原因:

    Cache::put('name','John',15);

    当你这样做时,你将它放在缓存中仅 15 秒或 15 毫秒取决于你对代码的配置。

    您还必须检查您是否拥有存储文件夹的权限:

    sudo CHOWN -R www:data:www:data storage

    您可以验证您是否手动将数据插入到缓存中,您将看到您已经缓存了该数据但过期日期 ttl 已过期。

    祝你好运

    【讨论】:

      猜你喜欢
      • 2019-10-04
      • 2021-09-27
      • 2019-03-28
      • 2021-07-19
      • 2020-04-05
      • 2017-12-12
      • 2021-09-15
      • 2012-09-13
      • 1970-01-01
      相关资源
      最近更新 更多