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