以上是由福州网站建设的小编为你分享了"tp6 redis缓存一定要序列化吗"文章,如果你在这方面有什么问题,随时联系我们
熊猫烧香 11月25日
看了下他的源码,$serialize = $this->options['serialize'][0] ?? "serialize";意思就是如果配置文件里不配置serialize参数,默认就用serialize序列化,看到上面回答里有用trim,trim在能取到redis值的时候没问题,但是当redis的值不存在,trim就会报一个参数为null的错误,所以要找一个可以兼容null值的函数,目前我找到的是strval,cache.php配置文件里改成:'serialize' => ['strval','strval']
huguo0314 2021年07月23日
TP6的缓存配置中有一个 serialize 把这个配置改一下就可以了 .
熊猫烧香 11月24日
回复 huguo0314 : 'serialize' => ['trim', 'trim']; 这样会有个问题,如果redis没有这个值,会报一个trim参数为null的错误,所以这就是tp6的一个bug
意志与灵魂 2021年07月29日
哦,好的,谢谢,我试一下
huguo0314 2021年07月27日
回复 意志与灵魂 :
看对方redis缓存的数据结构,如果是json格式,可以'serialize' => ['json_encode', 'json_decode'];
如果是纯字符串的话,也可以什么都不做'serialize' => ['trim', 'trim']; 总之'serialize'为空的话,框架就默认序列化了。
意志与灵魂 2021年07月27日
今天才登上来看到,谢谢你的答复,请问是这样子设置吗?我这样设置好像没有反应,还是要序列化
'redis_pand' => [ // Pandora
'type' => 'redis',
'host' => '127.0.0.1',
'select' => '1',
'port' => '7008',
'serialize' => []
],