[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]
```