INCR
INCR key
可用版本: >= 1.0.0
时间复杂度: O(1)
为键key
对应的数字字符串(整数)加上一。
演示
如果键key
不存在, 那么它的值会先被初始化为 0
, 然后再执行INCR命令。
INCR命令会返回键key
对应的数字字符串转换成数字后,再执行加一操作之后的值。
如果键key
对应的字符串不能被解释成数字, 那么INCR命令将返回一个错误。
INCR命令是一个针对字符串的操作。 因为Redis并没有专用的整数类型, 所以键key
对应的字符串在执行INCR命令时会被解释为十进制(64
位有符号整数)。
INCRBY
INCRBY key increment
可用版本: >= 1.0.0
时间复杂度: O(1)
为键key
对应的数字字符串(整数)加上 increment
。
演示
如果键key
不存在, 那么键key
的值会先被初始化为 0
, 然后再执行INCRBY命令。
INCRBY命令会返回加上 increment
之后, 键key
当前的值。
如果键key
对应的值不能被解释成数字, 那么INCRBY命令将返回一个错误。
INCRBYFLOAT
INCRBYFLOAT key increment
可用版本: >= 2.6.0
时间复杂度: O(1)
为键key
对应的值(浮点数)加上浮点数 increment
。
演示
如果键key
不存在, 那么INCRBYFLOAT会先将键key
的值设为 0
, 然后再执行加法操作。此外, 无论加法计算所得的浮点数的实际精度有多长, INCRBYFLOAT命令的计算结果最多只保留小数点的后十七位(0.1
用二进制表示不出来)。
INCRBYFLOAT命令会返回在加上增量 increment
之后, 键key
对应的新值。无论是键key
对应的值还是增量 increment
, 都可以使用像5e-1
这样的指数符号来表示。但是, 执行 INCRBYFLOAT命令之后的值总是以同样的形式储存(比如 0.5
、 1.5
), 小数部分尾随的0会被移除, 如果可能的话, 命令还会将浮点数转换为整数(比如 1.0
会被保存成 1
,下图的操作就是这样)。
键key
当前的值或者给定的增量increment
不能被解释为双精度浮点数,INCRBYFLOAT命令会返回一个错误(INCRBYFLOAT命令执行的键key
的值不是字符串类型,自然也会返回一个错误)。
DECR
DECR key
可用版本: >= 1.0.0
时间复杂度: O(1)
为键key
对应的数字值(整数)减去一。
演示
如果键key
不存在, 那么键key
的值会先被初始化为 0
, 然后再执行DECR操作。
DECR命令会返回键key
的值执行减一操作之后的新值。
如果键key
对应的值不能被解释为数字, 那么DECR命令会返回一个错误。值限制在64
位有符号数字表示之内,溢出也会返回一个错误。
DECRBY
DECRBY key decrement
可用版本: >= 1.0.0
时间复杂度: O(1)
将键key
对应的数字值(整数)减去decrement
。
演示
如果键key
不存在, 那么键key
的值会先被初始化为 0
, 然后再执行DECRBY命令。
DECRBY命令会返回键key
对应的值在执行减法操作之后的新值。
以下情况,DECRBY命令会返回一个错误。
- 键
key
对应的值不是字符串类型。 - 键
key
对应的值不能被解释为数字。 - 减量
decrement
不能被解释为数字。
Redis中字符串的INCR、INCRBY、INCRBYFLOAT、DECR、DECRBY命令就介绍到这里。
写博客是博主记录自己的学习过程,如果有错误,请指正,谢谢!