2016-03-21 2 views
1

Я использую redis для хранения некоторых числовых значений с помощью HSET. Вот пример команды, я используюСохранение ints с использованием HSET в redis

HSET "abc" "field" 123 

Я ожидаю, что это хранить целое, но когда я делаю HGETALL, это оказывается строка:

1) "field" 
2) "123" 

Мои два вопроса :

  1. Есть ли способ сохранить целое число в redis с помощью HSET?
  2. Есть ли экономия места для этого?

ответ

0

От http://redis.io/topics/protocol#integer-reply:

Следующие команды будут отвечать с целочисленным ответ: SETNX, DEL, СУЩЕСТВУЕТ, INCR, INCRBY, ОВЦС, DECRBY, DBSIZE, LASTSAVE, RENAMENX, MOVE, LLEN , SADD, SREM, SISMEMBER, SCARD.

Ответ на HSET - это строка, но это не значит, что Redis сохранил вашу информацию как таковую.

От http://redis.io/topics/memory-optimization

Поскольку Redis 2.2 многие типы данных оптимизированы для использования меньше места до определенного размера. Хэши, списки, наборы, состоящие из целых чисел и . Сортированные наборы, когда они меньше заданного количества элементов и до максимального размера элемента размером до , кодируются очень эффективным способом, так что использует до 10 раз меньше памяти (с 5 раз меньше используемой памяти средняя экономия).

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

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