通用命令
Redis 的通用命令是指不特定于某种数据结构,可以用于操作几乎所有键的命令
输入help @ generic可以查看所有redis通用命令
help @ generic

还可以通过" help [命令名称]"的方式查看命令使用方法

redis的通用命令很多,我们其实不需要把它们所有都记住,只要记住几个常见命令,学会使用help查看命令就行了。
常用命令
-
keys: 找到符合所有模板的Key
#查询所有键
keys *
#查询首字母为n的键
keys *a
简单直接,但是这种查询方式是模糊匹配,会阻塞 Redis 服务器,直到所有键扫描完毕。如果数据库有几百万个键,它会阻塞好几秒,导致服务不可用
- del:删除一个指定的key

返回值就是删除了多少个key
- Exists:判断key是否存在

- Expire:给一个key设置有效期,到期自动删除
Redis把数据存在内存中,如果不及时删除会导致内存占用过多,常用在验证码(5分钟过期)、登录状态(30分钟过期)、限流计数器(1分钟重置)的场景

expire key second
String类型命令
所有的键(Key)都是字符串类型,而值(Value)可以是字符串、整数或浮点数
| 命令名称 | 命令功能描述 |
|---|---|
| SET | 添加或者修改已经存在的一个 String 类型的键值对 |
| GET | 根据 key 获取 String 类型的 value |
| MSET | 批量添加多个 String 类型的键值对 |
| MGET | 根据多个 key 获取多个 String 类型的 value |
| INCR | 让一个整型的 key 自增 1 |
| INCRBY | 让一个整型的 key 自增并指定步长,例如:incrby num 2 让 num 值自增 2 |
| INCRBYFLOAT | 让一个浮点类型的数字自增并指定步长 |
| SETNX | 添加一个 String 类型的键值对,前提是这个 key 不存在,否则不执行 |
| SETEX | 添加一个 String 类型的键值对,并且指定有效期 |
Hash类型命令
Hash类型是一个包含多个键值对的键值对集合
-
string类型的key字符串
-
hash类型的key是键值对
hash结构可以对对象中每个字段进行单独的CRUD

| 命令名称 | 命令功能描述 |
|---|---|
| HSET | 添加或者修改 hash 类型 key 的 field 的值 |
| HGET | 获取一个 hash 类型 key 的 field 的值 |
| HMSET | 批量添加多个 hash 类型 key 的 field 的值 |
| HMGET | 批量获取多个 hash 类型 key 的 field 的值 |
| HGETALL | 获取一个 hash 类型的 key 中的所有的 field 和 value |
| HKEYS | 获取一个 hash 类型的 key 中的所有的 field |
| HVALS | 获取一个 hash 类型的 key 中的所有的 value |
| HINCRBY | 让一个 hash 类型 key 的字段值自增并指定步长 |
| HSETNX | 添加一个 hash 类型的 key 的 field 值,前提是这个 field 不存在,否则不执行 |
HSET
HSET不仅可以添加数据,还可以修改数据
#hset key field value
hest user name jack
HGET
hget key field
List类型命令
List类型类似于双向链表(支持正向检索和反向检索)
-
有序
-
元素可以重复
-
插入和删除速度快
|-----------|---------------------------|
| LPUSH | 向列表左侧(头部) 插入一个或多个元素 |
| RPUSH | 向列表右侧(尾部) 插入一个或多个元素 |
| LPOP | 移除并返回列表左侧(头部) 的第一个元素 |
| RPOP | 移除并返回列表右侧(尾部) 的第一个元素 |
| BLPOP | 从多个列表中,左侧阻塞式弹出元素(队列为空时等待) |
| BRPOP | 从多个列表中,右侧阻塞式弹出元素 |
| LRANGE | 获取列表指定索引范围内的元素(支持负数索引) |
| LINDEX | 通过索引获取列表中的单个元素 |
| LLEN | 获取列表长度(元素个数) |
| LTRIM | 保留指定范围内的元素,其余全部删除 |
| LSET | 通过索引设置列表中元素的值 |
| LINSERT | 在指定元素(pivot)的前/后插入新元素 |
LPUSH
lpush users "post1" "post2" "post3"
#数据存储的格式为"post3" "post2" "post1"
List结构模拟栈
栈的特点是先进后出,只需要push和pop的在同一边就行了(lpush+lpop)
List结构模拟队列
队列的特点是先进先出,只需要push和pop的在相反一边就行了(lpush+rpop)
Set类型命令
Set 类型是一个 无序 、唯一 的字符串集合
-
无序
-
元素不可重复
-
查找快
| 命令及语法 | 功能特征 | 详细说明 |
|---|---|---|
SADD key member ... |
向 set 中添加一个或多个元素 | 如果元素已存在则忽略;返回成功添加的新元素个数。 |
SREM key member ... |
移除 set 中的指定元素 | 如果元素不存在则忽略;返回成功移除的元素个数。 |
SCARD key |
返回 set 中元素的个数 | 获取集合的基数(长度);若 key 不存在则返回 0。 |
SISMEMBER key member |
判断一个元素是否存在于 set 中 | 存在返回 1,不存在或 key 不存在返回 0。 |
SMEMBERS key |
获取 set 中的所有元素 | 返回集合中的所有成员(注意:SMEMBERS 后面通常也需要跟对应的 key)。 |
| SINTER key1 key2 | 求key1、key2的交集 | |
| SDIFF key1 key2 | 求key1与key2的差集 | |
| SUNION key1 key2 | 求key1与key2的并集 |
SADD
SADD fruits "apple" "banana" "orange"
SISMEMBER
SISMEMBER fruit "apple"
Sorted set命令类型
sorted set是一个可排序的集合类型,里面每一个元素都有一个score属性,可以根据元素的score属性对元素进行排序。

|-----------------------|--------------------------------------------------|
| ZADD key score member | 添加一个或多个元素到 sorted set,如果元素已经存在,则更新其 score 值。 |
| ZREM key member | 删除 sorted set 中的一个指定元素。 |
| ZSCORE key member | 获取 sorted set 中的指定元素的 score 值。 |
| ZRANK key member | 获取 sorted set 中的指定元素的排名(按 score 从低到高排列,索引从 0 开始) |
| ZCARD key | 获取 sorted set 中的元素总个数。 |