# rpush & lpush

### **1. 基本語法**

**rpush**和**lpush**主要用來創建列表資料或新增列表元素，。

#### (1) rpus&#x68;**(`key` , `value[, value, ...]`)**&#x20;

**rpush**&#x5F9E;**`key`**&#x5C0D;應的**LIST右端**依序添加新元&#x7D20;**`value`**，新元素成為**LIST最後一個**元素，對應**index**為-1。

#### **(2) l**pus&#x68;**(`key` , `value[, value, ...]`)**&#x20;

**lpush**&#x5F9E;**`key`**&#x5C0D;應的**LIST左端依序**添加新元&#x7D20;**`value`**，新元素成為**LIST第一個**元素，對應index為0。

{% hint style="info" %}
無法使用get語法來對LIST資料取值，必須改用[lrange](https://app.gitbook.com/@aiii-mike/s/redis/~/drafts/-McnEjwXl_RL4nkuptWK/command/list/lrange)語法
{% endhint %}

{% tabs %}
{% tab title="TypeScript" %}
```typescript
client.rpush('uid', 'U001');
client.lrange('uid', 0, -1, redis.print);
```
{% endtab %}
{% endtabs %}

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

### 2. 範例

**(1) 創建LIST，並新增元素**

{% tabs %}
{% tab title="TypeScript" %}
```typescript
client.rpush('uid', 'U002', 'U003');
client.lrange('uid', 0, -1, redis.print);

client.lpush('uid', 'U004', 'U005');
client.lrange('uid', 0, -1, redis.print);
```
{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Output-TS" %}
```
Reply: U001,U002,U003
Reply: U005,U004,U001,U002,U003
```
{% endtab %}
{% endtabs %}

#### (2) node.js中，可透過Array新增元素

#### rpus&#x68;**(`key` , `[value, ...]`)**&#x20;

#### **l**pus&#x68;**(`key` , `[value, ...]`)**&#x20;

{% hint style="info" %}
特別注意使用lpush會使資料順序與原Array相反。
{% endhint %}

{% tabs %}
{% tab title="TypeScript" %}
```typescript
const uid_array = ['U001', 'U002', 'U003', 'U004', 'U005'];
client.lpush('uid:1', uid_array);
client.lrange('uid:1', 0, -1, redis.print);
```
{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Output-TS" %}
```
Reply: U005,U004,U003,U002,U001
```
{% endtab %}
{% endtabs %}



