概述
虽然 redis 的命令有很多,但是,我们细心观察还是可以看到一些规律
redis 的数据类型有五种:string/list/set/orderset/hash
- list 的操作命令一般都以
字母l
开头 - set 的操作命令一般都以
字母s
开头 - orderset 的操作命令一般都以
字母z
开头 - hash 的操作命令一般都以
字母h
开头
然后有一些共性就是:
- 集合类的 list、set、orderset 都有 add、rem、sort
- 键值对的 string 和 hash 都有 set、get
数据结构操作
list
对于 list ,需要知道是一个双向队列,这里有两个关键词:双向 和 队列:
- 队列:意味着可以 push 和 pop,有 len 、index、set、range
- 双向:意味着可以 l/rpush、l/rpop
队列有两个奇葩方法:
- 阻塞操作 bl/brpop
- rpoplpush 从一个队列删除,并添加到另一个队列
set
对于 set,这是一个无重复元素的集合
因为是集合,所以应该有:card / ismember
增删查分别是:add/rem/pop/members
然后还有集合的一些运算:交集、并集、差集
inter、union、diff
同时还支持这些操作的结果放到其他集合
interstore/unionstore/diffstore
比较独特的方法有:
- randmember: 速记返回集合中的一个元素
- move: 将元素从一个集合移到另一个集合
orderset
这是一个由 score 排序的集合,既不完全是集合,又有点列表的意思。
因为带 score,但和 score 直接相关的操作只有一个:
- incrby: 增加元素的 score
因为是有顺序的,所以和顺序相关的操作较多,分别有:
- rank: score 从小到大排序,获取一个元素的索引
- revrank: 和 rank 相反,顺序是 从大到小
- range: score 从小到大排序,获取指定 score 范围的所有元素
- revrange: 和 range 相反,顺序是 从大到小
毕竟还是集合,还是有集合相关的操作的,但也就两个
- unionsore: 对多个集合求并集,并保存到指定集合
- interstore: 对多个集合求交集,并保存到指定集合
hash
hash 其实就是值可以为键值对,和 string 区别不是很大,其实可以理解为在 string 的类型上再键值对一次,所以操作值的方式不再是简单的 set、get 了,而且 set、get 的含义也有些改变
- set: 二次哈希,比 string 需要多设置一个键
- get: 二次哈希,比 string 需要多提供一个键
批量操作
- mget: 可以一次获取多个 hash 对的值
- mset: 可以一次设置多个 hash 对的值
因为是 二次哈希,所以很多在其他类型上的操作在 hash 上都有一些新的诠释:
other | hash | 解释 |
---|---|---|
incrby | hincrby | 将指定hash中 field 的值增加指定数量 |
exists | hexists | 名称为 key 的函数是否存在键 field |
del | hdel | 删除指定 hash 中的键为 field 的域 |
llen | hlen | 指定 hash 中的元素个数 |
keys | hkeys | 指定 hash 中的所有键 |
还有一些独特的:
- hvals: 指定 hash 中的所有值
- hgetall: 指定 hash 中的所有键值对
管理命令
持久化的指令
- save:将数据同步保存到磁盘
- bgsave:将数据异步保存到磁盘
- lastsave:返回上次成功将数据保存到磁盘的 Unix时间戳
- shundown:将数据同步保存到磁盘,然后关闭服务
连接相关的命令
- auth:密码认证
- quit:退出连接
一些重要的未提到的命令
- type:返回 key 对应的类型
- randomkey:随机返回一个key
- rename:重命名key
- move:将 key 转到其他数据库
- dbsize:数据库中 key 的个数
- expire:设置 key 的活动时间
- ttl: 获取 key 的活动时间
- select: 按照索引查询
- flushdb:清除当前数据库
- flushall:清空所有数据库
备注
还有很多类似 事务、发布/订阅 之类的命令因为比较单一,对比分析的重要性不高,所以直接参考 cheat-sheet 即可。