Я весь день ломал голову над этим и искал в интернете любую помощь, но я не нашел ее, поэтому вот моя проблема:
У меня есть существующее веб-приложение, использующее Laravel 5.5, и я хочу настроить кэширование с использованием Memcached. Я бы использовал Redis, но так как Laravel не позволяет использовать Redis в качестве драйвера широковещательной рассылки и драйвера кеша, я застрял в Memcached. Я создал новый проект Laravel для тестирования кэширования перед его внедрением в существующий проект. Так вот у меня проблема ...
Я могу сохранить данные в кеше и немедленно вызвать Cache::get('mykey');
по тому же запросу, и данные будут возвращены. Если я прокомментирую Cache::put('mykey', $myData, 10);
, а затем обновлю страницу, никаких данных! Я проверял конфигурации снова и снова, и я не вижу никаких ошибок. Что-то, на что я должен указать: Если я запускаю composer dumpautoload -o
, то в кеше отображаются данные для нескольких запросов, а затем возвращается значение NULL, поскольку у него 99% предыдущих попыток. Вот как я проверил.
// This queries the database MOST of the time
$value = Cache::rememberForever('users', function() {
\Log::info('database query');
return Todo::all();
});
// This almost always returns null
Cache::put('todos', Todo::all(), 10);
$todos = (Cache::has('todos') ? Cache::get('todos') : null);
// Oddly, this will return true a few times also
$isAdded = Cache::add('todos', Todo::all(), 10);
if($isAdded)
\Log::info('Added to cache');
Я проверил, правильно ли установлено мое PHP-расширение memcached и что оно прослушивает порт 11211, поэтому я считаю, что это может быть конфигурация Laravel. Я использовал аутентификацию sasl, но я отключил это, и это не имело никакого значения.
Любая помощь будет принята с благодарностью!
UPDATE:
'memcached' => [
'driver' => 'memcached',
'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
'sasl' => [
env('MEMCACHED_USERNAME'),
env('MEMCACHED_PASSWORD'),
],
'options' => [
// Memcached::OPT_CONNECT_TIMEOUT => 2000,
],
'servers' => [
[
'host' => env('MEMCACHED_HOST', '127.0.0.1'),
'port' => env('MEMCACHED_PORT', 11211),
'weight' => 100,
],
],
],