Laravel 5.4 - 缓存一个数组

时间:2017-08-28 14:03:12

标签: laravel laravel-5 laravel-5.4

我正在尝试缓存数组,但由于某种原因,没有添加任何内容。这是代码:

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进行存储)

2 个答案:

答案 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获取建议),现在它正在运行。