Redis INCR数值操作令

9个月前 (04-27)
Redis string 类型提供了一些专门操作数值的令,比如 INCRBY(自增)、DECRBR(自减)、INCR(加1) 和 DECR(减1) 等令。数值操作,同样有特定的应用场景,比如常见的点赞、取消点赞、关注、取消关注等,这类和计数相关的场景都可以使用数值操作来实现。

注意:此时  key 对应的 value 值是必须是一个整数,或浮点数,使用令对这个数值进行自增或自减操作。当然,这个数值也不能无限的增大或减小, Redis 规定的数值范围是 -9223372036854775808 9223372036854775807,如果超过了这个数值范围,Redis 就会报错。

常用令

1) INCR令

INCR 令指对 value 数值做加 1 操作,其数值范围是 64 位的有符号整型(-9223372036854775808 9223372036854775807)。

如果 key 不存在,那么 Redis 将自动创建 key,并将 value 初始化为 1。以下示例,自动创建一个记录粉丝数量的 key,也就是 fans:num。

自动创建key,并将值置为 "1"

127.0.0.1:6379> INCR fans:num

(integer) 1

#粉丝数量加1

127.0.0.1:6379> get fans:num

"1"

2) DECR令

该令与 INCR 令相反,它对数值执行减 1 操作。

粉丝取消了关注

127.0.0.1:6379> DECR fans:num

(integer) 0

#取消关注,恢复为0粉丝

127.0.0.1:6379> get fans:num

"0"

3) INCRBY令

与 INCR 令类似,不过该令不是加 1 操作,它表示在原数的基础上进行指定数值的自增运算,语法格式如下:

INCRBY key increment

其中 increment 表示指定增量值。示例如下:粉丝数每次增加 3 个。

127.0.0.1:6379> INCRBY fans:num 3

(integer) 3

127.0.0.1:6379> INCRBY fans:num 5

(integer) 8

127.0.0.1:6379> INCRBY fans:num 10

(integer) 18

4) DECRBY令

该名与 INCRBY 令相反,它表示在原数值的基础上进行指定数值的自减运算。

INCRBY key decrement

其中 decrement 指定递减的步长。示例如下:

原来粉丝数是18,执行自减操作

127.0.0.1:6379> DECRBY fans:num 2

(integer) 16

127.0.0.1:6379> DECRBY fans:num 4

(integer) 12

127.0.0.1:6379> DECRBY fans:num 8

(integer) 4

127.0.0.1:6379> DECRBY fans:num 84

(integer) -80

5) INCRBYFLOAT

该令是 string 中操作浮点数的令,浮点数可以为正数或者负数,从而实现对数值的加减操作。示例如下:

127.0.0.1:6379> INCRBY fans:num 10

(integer) -70

127.0.0.1:6379> INCRBY fans:num 100

(integer) 30

127.0.0.1:6379> INCRBYFLOAT fans:num 1.5

"31.5"

127.0.0.1:6379> INCRBYFLOAT fans:num -10.5

"21"

在线练习工具:https://try.redis.io/

查看更多令:https://redis.io/commands