# zrevrange

### 1. 基本語法

#### zrang&#x65;**(`key`, `start`,`stop`, `["WITHSCORES"]`,`callback`)**&#x20;

與[**zrange**](https://aiii-mike.gitbook.io/redis/command/zset/zrange)相反，分數先「由大到小」排序，再根&#x64DA;**`start`**&#x4EE5;&#x53CA;**`stop`**&#x7BE9;選索引範圍，並回傳有序集合中的成員\[分數]。

### **2. 範例**

**(1) 有序集合按照分數「由小到大」或「由大到小」排列，並回傳集合成員及分數**

{% tabs %}
{% tab title="TypeScript" %}
```typescript
client.del('zset:1');

const key1 = 'zset:1'
const members1 = ['c', 'a', 'C', 'A', 'B', 'b'];
const scores1 = [-2, -1, 0, 0, 1, 2];

members1.forEach((mem, ind) => {
    client.zadd(key1, scores1[ind], mem);
})

client.zrange(key1, 0, -1, 'WITHSCORES', (err, obj) =>{
    console.log('zrange :', obj);
});
client.zrevrange(key1, 0, -1, 'WITHSCORES', (err, obj) =>{
    console.log('zrevrange :', obj);
});
```
{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Output-TS" %}
```
zrange : ['c', '-2', 'a', '-1', 'A', '0',  'C', '0', 'B', '1',  'b', '2']
zrevrange : ['b', '2',  'B', '1', 'C', '0',  'A', '0', 'a', '-1', 'c', '-2']
```
{% endtab %}
{% endtabs %}

