2015-12-11 2 views
0

Я использую laravel/redis для кэширования, я понял, что laravel добавляет некоторые строки, начинающиеся с моих значений, число - длина строки. Somthing так: Когда я ставлю ABC строку в ключ, retrived значение заключается в следующем:laravel redis cache добавить строку длиной до значений

s:3:"ABC"; 

Как решить эту проблему?

+0

Как вы извлекаете значение? –

+0

Мне нужно получить значение без менеджера кэша laravel. Я использую predis для этого. $ PredisClient-> Get ('MYKEY'); –

ответ

1

Ваша проблема заключается в том, что Laravel Cache Manager сериализует значение, которое он хранит, чтобы он мог хранить более сложные типы, такие как массивы.

Что вы хотите сделать, это unserialize значение, см. documentation для получения более подробной информации.

Так с predis называть вас будут делать вывод дополнительного шага десериализируется

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

таким образом значение будет «ABC»

Update:

принять во внимание Vladislav Rastrusny comment если вы хранят различные типы значений, включая численные значения, которые вы хотите сделать примерно так:

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

Посмотрите, как Laravel обрабатывает это методом get here.

+1

Обратите внимание, что Laravel [не делает] (https://github.com/laravel/framework/blob/master/src/Illuminate/Cache/RedisStore.php#L94) сериализует числовые значения ради производительности. –

 Смежные вопросы

  • Нет связанных вопросов^_^