1

我使用 laravel / redis 进行缓存,我意识到 laravel 在我的值开头添加了一些字符串,数字是字符串长度。像这样的东西:当我把 ABC 字符串放在一个键中时,检索到的值是这样的:

s:3:"ABC";

我应该如何解决这个问题?

4

1 回答 1

1

您的问题在于 Laravel 缓存管理器将其存储的值序列化,以便它可以存储更复杂的类型,例如数组。

您想要做的是unserialize价值,有关更多详细信息,请参阅文档

因此,通过您的 predis 调用,您将执行反序列化的附加步骤

unserialize($predisClient->get('myKey'));

这样值将是“ABC”

更新:

如果您要存储不同类型的值(包括数字),要考虑Vladislav Rastrusny 的评论,您需要执行类似的操作

$value = $predisClient->get('myKey');
$result = is_numeric($value) ? $value : unserialize($value);

在这里查看 Laravel 如何使用 get 方法处理这个问题。

于 2015-12-11T10:30:22.327 回答