在没有php序列化的情况下,如何使用laravel将原始json字符串存储在redis缓存中?
当我缓存json字符串时,比如so在没有php序列化的情况下,如何使用laravel将原始json字符串存储在redis缓存中?,laravel,Laravel,当我缓存json字符串时,比如socache()->rememberForever('globals',fn()=>json_encode(['foo'=>'bar']) 缓存中存储的值实际上是“s:13:\”{\“foo\”:“bar\”}\;“,而不是“{\“foo\”:“bar\”}” 有没有一种不用php序列化就可以存储字符串的方法?您应该能够使用Cache::forever函数存储字符串。来自Laravel文档: 永久方法可用于将项目永久存储在缓存中。由于这些项目不会过期,因此必须使用
cache()->rememberForever('globals',fn()=>json_encode(['foo'=>'bar'])代码>
缓存中存储的值实际上是“s:13:\”{\“foo\”:“bar\”}\;“
,而不是“{\“foo\”:“bar\”}”
有没有一种不用php序列化就可以存储字符串的方法?您应该能够使用Cache::forever
函数存储字符串。来自Laravel文档:
永久方法可用于将项目永久存储在缓存中。由于这些项目不会过期,因此必须使用“忘记”方法手动将其从缓存中删除:
缓存::永久('key','value')
鉴于此,我将您的代码更改为以下内容:
cache()->forever('globals', json_encode(['foo' => 'bar']));
您需要使用真正的缓存存储,如Redis::put(…)。cache facade有一种非常有用的方法来获取缓存中的复杂数据。例如,您可以通过该外观缓存模型或关联数组,而不必担心它在幕后如何被字符串化。但是,如果您不希望这种帮助器/处理来缓存和恢复变量,那么直接使用缓存存储。问题在于cache()->forever()
这就是您不需要导入缓存的原因facad是cache::forever()
的缩写,而laravel出于某种原因序列化了字符串