我正在尝试缓存数组,但由于某种原因,没有添加任何内容。这是代码:
public static function getEmployees()
{
if(!Cache::has('employees')):
$data = ['urlPath' => '/employees/directory'];
$params = ['fields' => 'jobTitle'];
$employees = API::callAPI('GET', $data, $params);
Cache::putMany($employees, 1440);
endif;
return Cache::get('employees');
}
乳清我尝试获取缓存值(数组),我得到null:
dd(Cache::get('employees'));
这是我要存储的数组:
array:2 [▼
"fields" => array:16 [▶]
"employees" => array:257 [▶]
]
(我使用db进行存储)
答案 0 :(得分:4)
您使用putMany()
错误。我敢打赌,只需使用常规的put()
:
Cache::put('employees', $employees, 1440);
但是如果你想要putMany()
,那么你需要先准备源数组,这是你没有做的:
$data = [
'fields' => whateverItComesFrom(),
'employees' => API::callAPI('GET', $data, $params),
];
Cache::putMany($data, 1440);
修改强>
正如评论中提到的其他用户一样,除了错误使用之外,数据库存储也可能导致问题,因为根据您要缓存的数据大小,它可能只是超出数据库类型限制,即
BLOB
只有65535字节(64KB)(大多数情况下都足够了,但是数组中有200多个条目......)。 MEDIUMBLOB
为16777215字节(16 MB),LONGBLOB
为4294967295字节(4 GB),因此可能值得检查该方面,并在需要时更改列类型。
答案 1 :(得分:3)
我发现了问题 - 文本字段的限制是缓存无效的原因。将类型更改为LONGBLOB(感谢num8er获取建议),现在它正在运行。