Redis之incr和incrby和incrbyfloat

INCR key

  • 可用版本: >= 1.0.0
  • 时间复杂度: O(1)

命令功能

  • 为键 key 储存的数字值加上一。

如果键 key 不存在, 那么它的值会先被初始化为 0 , 然后再执行 INCR 命令。

如果键 key 储存的值不能被解释为数字, 那么 INCR 命令将返回一个错误。

本操作的值限制在 64 位(bit)有符号数字表示之内。

INCR 命令是一个针对字符串的操作。 因为 Redis 并没有专用的整数类型, 所以键 key 储存的值在执行 INCR 命令时会被解释为十进制 64 位有符号整数。

返回值

INCR 命令会返回键 key 在执行加一操作之后的值。

代码示例

  1. >set rumenz 100
  2. OK
  3. > incr rumenz
  4. (integer) 101
  5. > incr rumenz
  6. (integer) 102
  7. > incr rumenz
  8. (integer) 103
  9. > get rumenz
  10. "103"

INCRBY key increment

  • 可用版本: >= 1.0.0
  • 时间复杂度: O(1)

命令功能

  • 为键 key 储存的数字值加上增量 increment 。

如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 INCRBY 命令。

如果键 key 储存的值不能被解释为数字, 那么 INCRBY 命令将返回一个错误。

本操作的值限制在 64 位(bit)有符号数字表示之内。

关于递增(increment) / 递减(decrement)操作的更多信息, 请参见 INCR 命令的文档。

返回值

  • 在加上增量 increment 之后, 键 key 当前的值。

代码示例

键存在,并且值为数字

  1. set rumenz 50
  2. OK
  3. > incrby rumenz 10
  4. (integer) 60
  5. > incrby rumenz 30
  6. (integer) 90
  7. > get rumenz
  8. "90"

键不存在

  1. > exists rumenz
  2. (integer) 0
  3. > incrby rumenz 50
  4. (integer) 50
  5. > get rumenz
  6. "50"

键存在,但值无法被解释为数字

  1. > set rumenz "test"
  2. OK
  3. > incrby rumenz 20
  4. (error) ERR value is not an integer or out of range

INCRBYFLOAT key increment

  • 可用版本: >= 2.6.0
  • 时间复杂度: O(1)

命令功能

  • 为键 key 储存的值加上浮点数增量 increment 。

如果键 key 不存在, 那么 INCRBYFLOAT 会先将键 key 的值设为 0 , 然后再执行加法操作。

如果命令执行成功, 那么键 key 的值会被更新为执行加法计算之后的新值, 并且新值会以字符串的形式返回给调用者.

无论是键 key 的值还是增量 increment , 都可以使用像 2.0e7 、 3e5 、 90e-2 那样的指数符号(exponential notation)来表示, 但是, 执行 INCRBYFLOAT 命令之后的值总是以同样的形式储存, 也即是, 它们总是由一个数字, 一个(可选的)小数点和一个任意长度的小数部分组成(比如 3.14 、 69.768 ,诸如此类), 小数部分尾随的 0 会被移除, 如果可能的话, 命令还会将浮点数转换为整数(比如 3.0 会被保存成 3 )。

此外, 无论加法计算所得的浮点数的实际精度有多长, INCRBYFLOAT 命令的计算结果最多只保留小数点的后十七位。

当以下任意一个条件发生时, 命令返回一个错误:

  • 键 key 的值不是字符串类型(因为 Redis 中的数字和浮点数都以字符串的形式保存,所以它们都属于字符串类型);
  • 键 key 当前的值或者给定的增量 increment 不能被解释(parse)为双精度浮点数。

返回值

在加上增量 increment 之后, 键 key 的值。

代码示例

  1. > set rumenz 100
  2. OK
  3. > incrbyfloat rumenz 20
  4. "120"
  5. > get rumenz
  6. "120"
  7. > incrbyfloat rumenz 20.99
  8. "140.99"
  9. > incrbyfloat rumenz 20.99
  10. "161.98000000000000001"

返回笔记列表
入门小站