我正在使用redis来使用HSET
存储一些数字值。以下是我正在使用的示例命令:
HSET "abc" "field" 123
我希望这个变量存储的是一个整数,但是当我执行 HGETALL
命令时,它显示为一个字符串:
1) "field"
2) "123"
我的两个问题是:
- 是否有办法使用
HSET
在Redis中存储整数? - 这样做是否有节省空间的好处?
我正在使用redis来使用HSET
存储一些数字值。以下是我正在使用的示例命令:
HSET "abc" "field" 123
我希望这个变量存储的是一个整数,但是当我执行 HGETALL
命令时,它显示为一个字符串:
1) "field"
2) "123"
我的两个问题是:
HSET
在Redis中存储整数?来自http://redis.io/topics/protocol#integer-reply:
以下命令将回复一个整数:SETNX,DEL, EXISTS,INCR,INCRBY,DECR,DECRBY,DBSIZE,LASTSAVE,RENAMENX,MOVE, LLEN,SADD,SREM,SISMEMBER,SCARD。
HSET
的回复是字符串,但这并不意味着Redis将您的信息存储为此类字符串。
来自http://redis.io/topics/memory-optimization
自Redis 2.2以来,许多数据类型已经优化,以在一定大小范围内使用更少的空间。 只由整数组成的哈希,列表和集合以及排序集,在小于给定的元素数量且达到最大元素大小时,以非常高效的方式编码,使用的内存最多可减少10倍(平均节省5倍内存)。
此页面还包含配置Redis以设置该优化阈值的命令。