php - Laravel 5.5 作为缓存驱动程序的 Memcached 问题
问题描述
我整天都在为此挠头并在互联网上寻找任何帮助,但我没有找到它,所以这是我的问题:
我有一个使用 Laravel 5.5 的现有 Web 应用程序,我想使用 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');
我已经验证我的 memcached PHP 扩展已正确安装并且它正在侦听端口 11211,所以我相信它可能是 Laravel 配置。我使用的是 sasl 身份验证,但我禁用了它,这没有任何区别。任何帮助将不胜感激!
更新:
'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,
],
],
],
解决方案
推荐阅读
- eclipse - 我在 web.xml 文件中收到错误。我不知道为什么
- python - 简单插补 - 返回值 Err
- python - 如何使用其值对字典进行排名
- spring - 无法将“java.lang.String”类型的值转换为所需的“java.util.Date”类型
- python - Django ORM SQL 原始 Mysql
- javascript - 全局暴露了一个 es6 模块但为空
- php - 使用 php 解析 SOAP API
- react-native - React-Native textInput 添加数字而不是添加数字
- reactjs - 使用 axios 向 elasticsearch 发送请求以映射卡片
- python - Discord Bot 上的循环功能不起作用