Hincrby
- 正数和负数均可作为增量参数,返回算术结果,即该字段新的值
- 如果字段不存在,将以0为初始值创建该字段,然后与增量进行计算,并返回结果
- 如果此命令作用在string类型上,会报错
- Hincebyfloat与此命令基本没区别
Command
$ redis-cli.exe -h 127.0.0.1 -p 6379
127.0.0.1:6379> hset snake number 24
(integer) 1
127.0.0.1:6379> hincrby snake number 1
(integer) 25
127.0.0.1:6379> hincrby snake number -1
(integer) 24
127.0.0.1:6379> hincrby snake fake 5
(integer) 5
127.0.0.1:6379> hset snake team lakers
(integer) 1
127.0.0.1:6379> hincrby snake team 2
(error) ERR hash value is not an integer
Code
func Hincrby(c redis.Conn) {
defer c.Do("DEL", "snake")
// The increment can be positive or negative, will return the result of addition.
c.Do("HSET", "snake", "number", "24")
newValue, err := c.Do("HINCRBY", "snake", "number", 1)
if err != nil {
colorlog.Error(err.Error())
return
}
fmt.Println("The increment is positive and new value of field is:", newValue)
newValue, err = c.Do("HINCRBY", "snake", "number", -1)
if err != nil {
colorlog.Error(err.Error())
return
}
fmt.Println("The increment is negative and new value of field is:", newValue)
// If field doesn't exist, will create the field with value 0, then add increment.
newValue, err = c.Do("HINCRBY", "snake", "fake", 5)
if err != nil {
colorlog.Error(err.Error())
return
}
fmt.Println("The result of new field is:", newValue)
// If use HINCRBY on string field, will get error.
c.Do("HSET", "snake", "team", "lakers")
newValue, err = c.Do("HINCRBY", "snake", "team", 2)
if err != nil {
colorlog.Error(err.Error())
return
}
}
Output
$ redis-cli.exe -h 127.0.0.1 -p 6379
127.0.0.1:6379> hset snake number 24
(integer) 1
127.0.0.1:6379> hincrby snake number 1
(integer) 25
127.0.0.1:6379> hincrby snake number -1
(integer) 24
127.0.0.1:6379> hincrby snake fake 5
(integer) 5
127.0.0.1:6379> hset snake team lakers
(integer) 1
127.0.0.1:6379> hincrby snake team 2
(error) ERR hash value is not an integer
网友评论