在redis中使用HSET存储整数

Sam*_*Lee 5 redis

我正在使用 redis 来存储一些数值HSET。这是我正在使用的示例命令

HSET "abc" "field" 123
Run Code Online (Sandbox Code Playgroud)

我希望它存储一个整数,但是当我这样做时HGETALL,它结果是一个字符串:

1) "field"
2) "123"
Run Code Online (Sandbox Code Playgroud)

我的两个问题是:

  1. 有什么方法可以使用redis存储整数吗HSET
  2. 这样做有节省空间的好处吗?

Nil*_*oct 1

来自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 以设置优化阈值的命令。