Redis incr
函数的行为不稳定。当尝试递增任何未设置的正整数键时,会出现以下错误。但是,当首先使用set
设置它,然后使用incr
递增同一个键时,问题就不存在了。有什么原因导致它表现出这种行为吗?有什么解决方法吗?
127.0.0.1:6379[5]> incr 100
(error) ERR value is not an integer or out of range
127.0.0.1:6379[5]> incr '100'
(error) ERR value is not an integer or out of range
127.0.0.1:6379[5]> incr "100"
(error) ERR value is not an integer or out of range
127.0.0.1:6379[5]> set 100 1
OK
127.0.0.1:6379[5]> incr 100
(integer) 2
只有在增加不存在的整数键时才会出现此行为:
127.0.0.1:6379> get "ahmedov"
(nil)
127.0.0.1:6379> incr "ahmedov"
(integer) 1
127.0.0.1:6379> incr "ahmedov"
(integer) 2
127.0.0.1:6379> get 12.1
(nil)
127.0.0.1:6379> incr 12.1
(integer) 1
127.0.0.1:6379> get -1
(nil)
127.0.0.1:6379> incr -1
(integer) 1
INCR
会隐式地将其值初始化为0。如果我没记错,文档中已经很好地引用了这一点。 - Itamar Haber