福州網(wǎng)站建設(shè)>網(wǎng)站新聞>thinkphp6專區(qū)

        tp6 redis緩存一定要序列化嗎

        發(fā)布日期:2022-11-25瀏覽次數(shù):53 來(lái)源:福州網(wǎng)站建設(shè) 標(biāo)簽: TP6 緩存 redis

        我們有個(gè)項(xiàng)目,使用的是TP6,調(diào)用的對(duì)方redis緩存時(shí),只要碰到帶英文字符的,就會(huì)報(bào)serialize error at offset...

        發(fā)現(xiàn)redis中的英文字符串并沒(méi)有進(jìn)行序列化,而thinkphp使用cache::store()->get('xxx')取值時(shí),發(fā)現(xiàn)必須序列化,導(dǎo)致了這個(gè)報(bào)錯(cuò),請(qǐng)問(wèn),是否可以取消TP6針對(duì)redis緩存的序列化和反序列化的步驟

        以上是由福州網(wǎng)站建設(shè)的小編為你分享了"tp6 redis緩存一定要序列化嗎"文章,如果你在這方面有什么問(wèn)題,隨時(shí)聯(lián)系我們

        網(wǎng)友評(píng)論

        • 熊貓燒香 2022年11月25日

          看了下他的源碼,$serialize = $this->options['serialize'][0] ?? "serialize";意思就是如果配置文件里不配置serialize參數(shù),默認(rèn)就用serialize序列化,看到上面回答里有用trim,trim在能取到redis值的時(shí)候沒(méi)問(wèn)題,但是當(dāng)redis的值不存在,trim就會(huì)報(bào)一個(gè)參數(shù)為null的錯(cuò)誤,所以要找一個(gè)可以兼容null值的函數(shù),目前我找到的是strval,cache.php配置文件里改成:'serialize' => ['strval','strval']

        • huguo0314 2021年07月23日

          TP6的緩存配置中有一個(gè) serialize 把這個(gè)配置改一下就可以了 .

        • 熊貓燒香 2022年11月24日

          回復(fù) huguo0314 : 'serialize' => ['trim', 'trim']; 這樣會(huì)有個(gè)問(wèn)題,如果redis沒(méi)有這個(gè)值,會(huì)報(bào)一個(gè)trim參數(shù)為null的錯(cuò)誤,所以這就是tp6的一個(gè)bug

        • 意志與靈魂 2021年07月29日

          哦,好的,謝謝,我試一下

        • huguo0314 2021年07月27日

          回復(fù) 意志與靈魂 :
          看對(duì)方redis緩存的數(shù)據(jù)結(jié)構(gòu),如果是json格式,可以'serialize' => ['json_encode', 'json_decode'];
          如果是純字符串的話,也可以什么都不做'serialize' => ['trim', 'trim']; 總之'serialize'為空的話,框架就默認(rèn)序列化了。

        • 意志與靈魂 2021年07月27日

          今天才登上來(lái)看到,謝謝你的答復(fù),請(qǐng)問(wèn)是這樣子設(shè)置嗎?我這樣設(shè)置好像沒(méi)有反應(yīng),還是要序列化

          'redis_pand' => [ // Pandora
          'type' => 'redis',
          'host' => '127.0.0.1',
          'select' => '1',
          'port' => '7008',
          'serialize' => []
          ],

        thinkphp6專區(qū)有關(guān)的文章
        與標(biāo)簽 TP6 緩存 redis 有關(guān)的文章
        如果您有什么問(wèn)題,歡迎咨詢我們客服! 點(diǎn)擊QQ咨詢