# incr & decr

### 1. 基本語法

#### **incr(`key`**, **`callback`)**

&#x82E5;**`key`** 值存在且字符串內容&#x70BA;**「整數」**&#x5F62;式，則該整數值增加1。

{% hint style="info" %}
**`key`對應的整數資料可以是「負整數」字串形式**
{% endhint %}

### 2. 範例

#### (1) 若`key`存在，incr後對應`value`數值+1

{% tabs %}
{% tab title="TypeScript" %}
```typescript
client.set('num', '10');
client.incr('num');
client.get('num', redis.print); 
```
{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Output-TS" %}
```
Reply: 11
```
{% endtab %}
{% endtabs %}

#### (2) 預設值：若`key`不存在，incr後新增`key`且值為1。

{% tabs %}
{% tab title="TypeScript" %}
```typescript
client.del('num');
client.get('num', redis.print); 

client.incr('num');
client.get('num', redis.print); 

client.incr('num');
client.get('num', redis.print); 
```
{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Output-TS" %}
```
Reply: null
Reply: 1
Reply: 2
```
{% endtab %}
{% endtabs %}

### 3. 自定義遞增值

#### **incrby(`key`,  `increment:<integer>`)**

透&#x904E;**`increment`**&#x4E00;次增加多個整數單位。

{% hint style="info" %}
**`increment`**&#x53EF;以是負整數
{% endhint %}

{% tabs %}
{% tab title="TypeScript" %}
```typescript
client.set('score', '60');
client.incrby('score', -10);
client.get('score', redis.print); 
```
{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Output-TS" %}
```
Reply: 50
```
{% endtab %}
{% endtabs %}

### 4. 浮點數的遞增

#### **incrbyfloat(`key`,  `increment:<number>`)**

{% tabs %}
{% tab title="TypeScript" %}
```typescript
client.set('score', '60.3');
client.incrbyfloat('score', 0.7);
client.get('score', redis.print); 
```
{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Output-TS" %}
```
Reply: 61
```
{% endtab %}
{% endtabs %}

### 5. 遞增、遞減語法對應

| 遞增              | 遞減         |
| --------------- | ---------- |
| **incr**        | **decr**   |
| **incrby**      | **decrby** |
| **incrbyfloat** |            |

