[TOC]
## 基礎命令
- 獲得符合規則的鍵名列表
```
KEYS pattern
```
| 符號 | 含義 |
| --- | --- |
| ? | 匹配一個字符 |
| * | 匹配任意個字符(包括0個) |
| [] | 匹配括號間的任意字符 |
| \x | 匹配字符x 用于轉義 比如 ?, * |
- 判斷一個鍵是否存在
```
EXISTS key
```
存在返回 1 否則返回 0
- 刪除鍵
```
DEL key [key ... ]
```
刪除一個或多個鍵 返回刪除鍵的個數
- 獲得鍵值的數據類型
```
TYPE key
```
返回 字符串 string, 散列 hash, 列表 list, 集合 set, 有序集合 zset
- 匹配模式下刪除
```
redis-cli keys "pattern" | xargs redis-cli del
redis-cli -n 數據庫ID keys "pattern" | xargs redis-cli -n 數據庫ID del
```
## 字符串 string 命令
- 賦值與取值
單個鍵值設置獲取
```
SET key value
GET key
```
多個鍵值設置獲取
```
MSET key value [key value ...]
MGET key [key ...]
```
- 增加/減少
+1 -1
```
INCR key
DECR key
```
+n -n
```
INCRBY key increment
DECRBY key decrement
```
+浮點數
```
INCRBYFLOAT key increment
```
- 向尾部添加值
```
APPEND key value
```
返回追加后字符串的長度
- 獲取字符串長度
```
STRLEN key
```
返回鍵值長度 不存在返回0
## 散列 hash 命令
- 賦值取值
單字段
```
HSET key field value
HGET key field
```
多字段
```
HMSET key field value [field value ...]
HMGET key field [field ...]
```
- 獲取所有字段和字段值
```
HGETALL key
```
- 判斷字段是否存在
```
HEXISTS key field
```
存在返回1 否則0
- 字段不存在時賦值
```
HSETNX key field value
```
- 增加數字
```
HINCRBY key field increment
```
- 刪除字段
```
HDEL key field [field ...]
```
返回刪除字段個數
- 只獲取字段名或字段值
```
HKEYS key
HVALS key
```
- 獲取字段數量
```
HLEN key
```
## 列表 list 命令
- 向列表兩端增加元素
```
LPUSH key value [value ...]
RPUSH key value [value ...]
```
- 從列表兩端彈出元素
```
LPOP key
RPOP key
```
- 獲取列表中元素個數
```
LLEN key
```
- 獲得列表片段
```
LRANGE key start stop
```
返回從索引 [start, stop] 區間的所有元素 索引從 0 開始
支持負索引 -1 是最右第一個元素
- 刪除列表中指定的值
```
LREM key count value
```
- 獲取/設置指定索引的元素值
```
LINDEX key index
LSET key index value
```
- 只保留列表指定片段
```
LTRIM key start stop
```
- 向列表中插入元素
```
LINSERT key BEFORE|AFTER pivot value
```
- 將元素從一個列表轉到另一個列表
```
RPOPLPUSH source destination
```
## 集合 set 命令
- 增加/刪除元素
```
SADD key member [member ...]
SREM key member [member ...]
```
- 獲得集合中所有元素
```
SMEMBERS key
```
- 判斷是否在集合中
```
SISMEMBER key member
```
- 差運算
```
SDIFF key [key ...]
```
A 差 B = 屬于A且不屬于B的元素構成的集合
- 交運算
```
SINTER key [key ...]
```
A 交 B = 屬于A且屬于B的元素構成的集合
- 并運算
```
SUNION key [key ...]
```
A 并 B = 屬于A或屬于B的元素構成的集合
- 獲得集合中元素個數
```
SCARD key
```
- 進行集合運算并將結果存儲
```
SDIFFSTORE destination key [key ...]
SINTERSTORE destination key [key ...]
SUNIONSTORE destination key [key ...]
```
- 隨機獲得集合中的元素
```
SRANDMEMBER key [count]
```
- 從集合中彈出一個元素
```
SPOP key
```
## 有序集合 zet 命令
**注** `+inf` 和 `-inf` 分別表示正負無窮
- 增加元素
```
ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
```
- 獲得元素的分數
```
ZSCORE key member
```
- 獲得排名在某個范圍的元素列表
```
ZRANGE key start stop [WITHSCORES]
```
- 獲得指定分數范圍的元素
```
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
```
- 增加某個元素分數
```
ZINCRBY key increment member
```
- 獲得集合中元素的數量
```
ZCARD key
```
- 獲得指定分數范圍內的元素個數
```
ZCOUNT key min max
```
- 刪除一個或多個元素
```
ZREM key member [member ...]
```
- 按照排名范圍刪除元素
```
ZREMRANGEBYRANK key start stop
```
- 按照分數范圍刪除元素
```
ZREMRANGEBYSCORE key min max
```
- 獲得元素的排名
```
ZRANK key member
ZREVRANK key member
```
- 計算有序集合的交集
```
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]
```