2015-09-04 7 views
6

Я получаю смешанные ответы на мои исследования здесь.Имеет ли Redis только представление строки, но не числовое значение

  • Может ли кто-нибудь подтвердить, что сервер Redis может хранить только данные любых числовых значений?

  • Например, если я использую Java-клиент (Jedis) с двойным типом в lpush, нужно ли его преобразовать в эквивалент строкового типа перед отправкой в ​​Redis?

  • Или есть способ, которым я могу отправить реальный числовой тип, например, двойной? Если да, есть ли какой-нибудь примерный код о том, как это сделать?

Благодарности

ответ

10

Redis хранит все в строке или в его строковое представление. Даже функции, как INCR работы первого разбора его в INTEGER затем выполняя операцию

Примечания: это операция строки, потому что Redis не имеет выделенный целочисленный типа. Строка, хранящаяся в ключе, интерпретируется как целое число со знаком на основе 10 бит, для выполнения операции.

Redis хранит целые числа в их целочисленном представлении, поэтому для строковых значений, которые фактически содержат целое число, нет накладных расходов для хранения строкового представления целого числа.

И w.r.t Jedis; глядя на источник, я не думаю, что он поддерживает что-либо другое, кроме строк

+1

Большое спасибо за подтверждение моей теории. Я действительно ценю это! –

0

Двойные номера могут быть сохранены как строка, если вы используете кодеки JSON, но также могут храниться в двоичном формате, используемом Kryo, CBOR, Кодеки MsgPack, которые поддерживаются платформой Redis для Java - Redisson.