平特肖公式网论坛|今晚平特肖开什么呢|

cache緩存get的問題

瀏覽:101 發布日期:2020/02/12 分類:ThinkPHP6專區 關鍵字: json_encode json_decode serialize serialization
使用緩存 cache 存入一個數組進去 , 再次獲取的時候發現底層就報錯了: 閉包無法序列化報錯 Serialization of 'Closure' is not allowed

查看源碼后發現:
/**
* 反序列化數據
* @access protected
* @param string $data 緩存數據
* @return mixed
*/
protected function unserialize(string $data)
{
if (is_numeric($data)) {
return $data;
}

$unserialize = $this->options['serialize'][1] ?? "unserialize";

return $unserialize($data);
}

這里調用基類進行序列化 , 而方法使用緩存配置里面的方法, 我加的是json_encode,json_decode:


'redis' => [
// 驅動方式
'type' => 'redis',
// 服務器地址
'host' => env('redis.host','127.0.0.1'),
// 服務器密碼
'password'=> env('redis.password',''),
// 服務器端口
'port'=> env('redis.port','6379'),
// 緩存前綴
'prefix' => env('cache.prefix',''),
// 緩存有效期 0表示永久緩存
'expire' => (int)env('cache.expire',0),
//緩存的庫
'select' => (int)env('cache.select',0),
//序列化方法
'serialize' => ['json_encode', 'json_decode'],
],

serialize 緩存序列化和反序列化方法 , 不是很懂為啥支持這個參數,底層只是簡單的 return $unserialize($data); 沒什么用 , 比如
傳入json_decode吧, 那些需要格式化為數組的, 需要傳入參數 json_decode($data,true); 這個底層不支持,存進去的數據是數組,取出來后還需要處理一下,非常不方便,非常雞肋
最佳答案
評論( 相關
后面還有條評論,點擊查看>>
平特肖公式网论坛
足球澳客网 贵阳捉鸡麻将手机版 山东十一选五走试图 微乐贵阳捉麻将开挂 今日股市最新消息上证指数000001上证指数东方财富网 打麻将赢钱偏方 股票配资平台排名 浙江麻将 互联网理财平台有哪些类型 湖北快三快三推荐号码