基于前面的“二八定律” 路线图,认识了 Redis 核心的五种基本数据结构,如果想要对五种数据结构做到灵活的使用,就需要了解 Redis 在数据结构之上封装的数据操作。
Redis 针对命令的设计是有一定规律的,命令的名称是由 数据结构+操作 构成,对通用的数据操作模式进行归纳
| 操作/数据结构 | string 字符串 | hash 字典 | list 列表 | set 集合 | zset 有序集合 |
|---|---|---|---|---|---|
| 单个键,存 | set | hset | lpush/rpush | sadd | zadd |
| 单个键,取 | get | hget | lpop/rpop blpop/brpop | spop | zpopmax zpopmin bzpopmax bzpopmin |
| 多个键,取 | mget | lmpop blmpop | zmpop bzmpop | ||
| 范围取值 | getrange | lrange | zrange zrevrange | ||
| 对不存在的键,设置值 | setnx | hsetnx | lpushx/rpushx | ||
| 随机取 | hrandfield | srandmember | zrandmember | ||
| 删除元素 | del | hdel | lrem | srem | zrem |
| 元素长度 | strlen | hlen | llen | scard | zcard |
| 元素扫描 | scan | hscan | scan | zscan |
string 与 list 和 hash 的类似操作
| 操作/数据结构 | string 字符串 | hash 字典 | list 列表 |
|---|---|---|---|
| 获取值后,删除 | getdel | hgetdel | |
| 获取值后,设置过期时间 | getex | hgetex | |
| 设置值后,加上过期时间 | setex/psetex | hsetex | |
| 指定位置插入数据 | setrange | linsert |
string 与 hash 、zset 的类似操作
| 操作/数据结构 | string 字符串 | hash 字典 | zset 有序集合 |
|---|---|---|---|
| 原子计数,自增 | incr/incrby/incrbyfloat | hincrby/hincrbyfloat | zincryby |
| 原子计数,自减 | decr/decrby |
list 与 hash 与 set 的类似操作
| 操作/数据结构 | list 列表 | hash 字典 | set 集合 |
|---|---|---|---|
| 键元素转移 | lmove blmove | smove | |
| 成员判断 | hexists | sismember | |
| 所有成员 | hgetall | smembers |
set 与 zset 的类似操作
| 操作/数据结构 | set 集合 | zset 有序集合 |
|---|---|---|
| 取交集结果 | sinter | zinter |
| 保存交集结果 | sinterstore | zinterstore |
| 取交集结果数量 | sintercard | zintercard |
| 取差集结果 | sdiff | zdiff |
| 保存交集结果 | sdiffstore | zdiffstore |
| 取并集结果 | sunion | zunion |
| 保存并集结果 | sunionstore | zunionstore |
string 类型的特定操作
| 操作 | 命令 |
|---|---|
| 同时设置多个键 | mset |
| 在值后追加内容 | append |
| 对多个键设置值后,加上过期时间 | msetex |
| 对多个不存在的键,设置值 | msetnx |
| 获取后,替换新值 | getset |
| 最长公共子序列 | lcs |
list 类型的特点操作
| 操作 | 命令 |
|---|---|
| 右出左进 | rpoplpush brpoplpush |
| 元素的索引 | lpos |
| 指定索引的元素 | lindex |
| 修剪长度 | ltrim |
hash 字典类型的特点操作
| 操作 | 命令 |
|---|---|
| 单个键,取多个字段 | hmget |
| 所有字段 | hkeys |
| 所有值 | hvals |
| 设置(毫)秒后过期 | hexpire hpexpire |
| 设置到(毫)秒级时间戳过期 | hexpireat hpexpireat |
| 获取过期(毫)秒时间戳 | hexpiretime hpexpiretime |
| 获取过期(毫)秒数 | httl/hpttl |
| 持久化字段 | hpersist |
| 值长度 | hstrlen |
set 类型的特点操作
| 操作 | 命令 |
|---|---|
| 多个成员判断 | smismember |
zset 类型特点操作
| 操作 | 命令 |
|---|---|
| 获取排名 | zrank |
| 反向获取排名 | zrevrank |
| 获取成员分值 | zscore |
| 获取多个成员分值 | zmscore |
| 分值范围下,查询数量 | zcount |
| 相同分值下,不同成员范围下,查询数量 | zlexcount |
| 范围取值并存储 | zrangestore |
| 根据成员范围删除 | zremrangebylex |
| 根据排名范围删除 | zremrangebyrank |
| 根据分值范围删除 | zremrangebyscore |
评论