string
设置键值对覆盖旧值(可用于缓存json、缓存页面、存取二进制文件)
set key value
设置键值对覆盖并返回旧值(可用于清零)
getset key value
键值对有值时更新
set key value xx
键值对无值时创建(可用于分布式锁)
set key value nx
获取键对应的值
get key
删除键值对
del key
覆盖性设置多个键值对(用于存取对象)
mset key1 val1 key2 val2
获取多个键对应的值(用于获取对象)
mget key1 key2
多个键值仅无值时设值,当且仅当全部无值修改成功(用于不重复存对象)
msetnx key1 val1 key2 val2
获取键对应字符串值长度
strlen key
修改键对应的值中子串(闭区间,offset超过现有key端点自动扩容或补齐空白,可用于摘要)
setrange key offset substring
获取键对应的值中子串(闭区间,正数0始从左向右,倒数-1始从右向左)
getrange key start end
拼接字符串到键值末尾(可用于追加方式的存储日志)
append key content
整数值加法(上溢报错,仅限long long范围正确解析)
incrby key num
整数值减法(下溢报错,仅限long long范围正确解析)
decrby key num
整数值自增 (用于计数、次数限制、id生成计数等,原子操作)
incr key
整数值自减
decr key
浮点数加法(加负数实现减法,long double范围正确解析,可与整数运算)
incrbyfloat key num
hash
用于存储对象、存储映射关系(一对一、一对多)、存储会话、拆分存储数据结构
hash内存更小效率更高,string字段修改功能丰富
覆盖式设置key对应map的键值对
hset key field1 val1
map字段不存在时设置
hsetnx key field val
删除key对应map的键值对
hdel key field
查询key对应mapd的键值对
hget key field
一次性覆盖设置多组键值对(用于存储对象)
hmset key field1 val1 field2 val2
一次性查看多组键值对(用于查看对象)
hmget key field1 field2
查看key对应map的所有键
hkeys key
查看key对应map的所有值
hvals key
查看key对应map的所有键值对
hgetall key
查询key对应map的属性是否存在
hexists key field
map字段整数运算(加负数实现减法,仅解析正确时生效)
hincrby key field
map字段浮点数运算(加负数实现减法,仅解析正确时生效)
hincrbyfloat key field
获取map字段所存值长度
hstrlen key field
获取hash中所存map字段数量
hlen key
list
用于有序存储批量数据,可实现栈、队列(可用于秒杀场景、可实现消息队列、可用于即时通信)等线性结构,可用于分页,可存储二进制数据
create
左侧添加元素(头插法,用于入栈、入队列等,插入结果倒序序列)
lpush key val1
左侧添加多个元素
lpush key val1 val2
右侧添加元素(尾插法维护线性结构,插入结果正序序列)
rpush key val1
右侧添加多个元素
rpush key val1 val2
仅在list存在(有元素)时左侧添加一个或多个元素
lpushx key val1 val2
仅在list存在(有元素)时右侧添加一个或多个元素
rpushx key val1 val2
在指定内容元素左侧添加元素(无指定元素不操作返回-1)
linsert key before content val
在指定内容元素右侧添加元素(无指定元素不操作返回-1)
linsert key after content val
delete
左侧删除元素(用于出队列、出栈等)
lpop key
从待选多个list中选择第一个可lpop的list执行,若无满足list当前redis-cli阻塞timeout时间,直到任一list有数据可供弹出或达到超时时长返回,按FIFO原则解除阻塞(用于生产者、消费者模型,如用于消息队列)
blpop key1 key2 key3 timeout
右侧删除元素(用于出队列、出栈等)
rpop key
从待选多个list中选择第一个可rpop的list执行,若无满足list当前redis-cli阻塞timeout时间,直到任一list有数据可供弹出或达到超时时长返回,按FIFO原则解除阻塞(用于生产者、消费者模型,如用于消息队列)
brpop key1 key2 key3 timeout
删除指定内容元素(num=0删除所有匹配项,num>0删除左侧起始的num个匹配项,num<0右侧起始的num个匹配项)
lrem key num content
read
查看list指定索引元素(正序0左端点,倒序-1右端点)
lindex key index
查看list指定范围元素(闭区间,0左端点,-1右端点,单个区间端点超范围设为列表端点,可用于分页场景)
lrange key start end
查看list长度
llen key
update
设置指定下标元素(索引超限报错)
lset key index val
设置子list(闭区间)为新list
ltrim key start end
special
右删左进(同key可用于循环移位,不同key交换元素,仅要求source不为空)
rpoplpush sourcekey targetkey
阻塞式右删左进(source为空时阻塞,直到source不为空操作成功或达到超时时间解除阻塞)
brpoplpush sourcekey targetkey timeout
set
无序无重集合,可用于唯一值缓存(不同用户数统计),存储一对多、多对多映射(朋友关系、分类标签等),集合并差交集运算(共同好友、多条件查询等场景)
create
向set中非重添加值(若无则创建)
sadd key val [val2 ...]
delete
删除set中指定内容的元素(仅删除匹配项)
srem key val1 [val2 ...]
随机删除指定数目元素(num仅正数生效)
spop key [num]
read
查看set中所有元素
smembers key
查看set中是否包含指定内容元素
sismember key val
查看指定set中元素个数
scard key
随机读取集合中指定元素个数(概率相关,如抽奖)
# 0<num<size,随机读num个不重复元素 # num>size,输出set # num<0,随机读取num个可重复元素 srandmember key [num]
special
将指定元素移至另一个集合
smove srcKey tarKey val
集合并集
# 多集合并集 sunion key1 key2 # 多集合求并集并覆盖式保存为新的集合 sunionstore newKey key1 key2
集合差集
# 多集合顺序求差集 sdiff key1 key2 # 多集合求差集并覆盖式保存为新的集合 sdiffstore newKey key1 key2
集合交集
# 多集合交集 sinter key1 key2 # 多集合求交集并覆盖式保存为新的集合 sinterstore newKey key1 key2
zset
create & update
覆盖式增加一个或多个分值为score的成员name,默认相同分值按字典升序存储
zadd key score name [score1 name1 ...] # 完整指令 zadd key [nx|xx] # xx成员存在时更新,nx成员不存在时创建 [gt|lt] # lt命令中score小于目标成员score则更新,目标成员不存在则创建成员;gt反之 [ch] # ch返回被修改成员数量 [incr] # 可用作自增主键 score name [score1 name1 ...] # 添加多项成员
delete
删除一个或多个指定成员(zset保证成员唯一性)
zrem key name [name1 name2...]
范围删除成员(按分数)
# 默认取升序分值[min, max]范围成员,(开区间,[闭区间,两端-inf,+inf zremrangebyscore key min max
范围删除成员(按排名)
# 升序排名下标从0开始,倒序从-1开始,闭区间 zremrangebyrank key min max
范围删除成员(按顺序字典序)
zremrangebylex key min max
弹出单集合的topN
# 默认弹出一个,除非指定N zpopmax key [N] zpopmin key [N] # 依次从匹配的集合中弹出topN,而非全局topN zmpop keycounts key1 [key2 ...] <min | max> [count N]
阻塞式弹出最小值、阻塞式弹出最大值
bzpopmin key1 key2 timeout bzpopmin key1 key2 timeout
read
查看成员分值
zscore key name # 查看多个成员分值 zmscore key name [name1 ...]
查看成员排名
# 查看升序排名 zrank key name # 查看降序排名 zrevrank key name
查看范围成员(按排名)
# 查看升序下标范围,(index开区间,[index闭区间,0左端点,-1右端点 zrange key begin end # 查看降序范围 zrevrange key begin end # zrange完整指令 zrange key begin end [rev] # rev倒序 [byscore|bylex] # byscore根据分数排,bylex根据字典序排 [limit offset count] # limit支持分页,offset开始位置,count总数 [withscores] # withscores显示成员分数
查看范围成员(按分值)
# 默认取升序分值[min, max]范围成员,(开区间,[闭区间,两端-inf,+inf zrangebyscore key min max # 查看降序排名范围成员 zrevrangebyscore key max min # limit支持分页,offset开始位置,count总数,withscores显示成员分数 zrangebyscore key min max [withscores] [limit offset count]
查看范围成员(按字典序,要求集合所有成员分值相同)
# 取字典升序(min, max]范围成员,(开区间,[闭区间,字典序最小-,字典序最大+ zrangebylex key (min [max [limit offset count] # 取字典序降序 zrevrangebylex key min max
集合元素计数
zcard key
按分值范围成员计数
# 默认计数[min, max]范围成员,(开区间,[闭区间,两端-inf,+inf zcount key min max
按字典序范围成员计数
# 取字典升序(min, max]范围成员,(开区间,[闭区间,字典序最小-,字典序最大+ zlexcount key (min [max
随机获取成员
# count指定成员个数,正数为非重复个数,负数为可重复个数 zrandmember key [count] [WITHSCORES]
special
交集运算
# 指定参与运算的集合及数量,并产生临时结果输出,重复元素分值默认求和 zinter keycounts key1 key2 # 指定参与运算的集合及数量,并将结果存为新集合 zinterstore newKey keycounts key1 key2 # 完整zinter命令 zinter keycounts key [key ...] [weights weight [weight ...]] # 加权平均方式计算结果集各成员新分值,不指定默认均为1 [aggregate <sum | min | max>] # 计算重复元素的新分值:取重复成员加权分值和或加权最值 [withscores] # 展示结果集分数 # 完整zinterstore命令 zinterstore newkey keycounts key1 [key2 ...] [weights weight [weight ...]] [aggregate sum|min|max] # 返回交集运算结果集limit后的实际数目 zintercard keycounts key1 [key2 ...] [limit count]
并集运算
# 指定参与运算的集合及数量,并产生临时结果输出,重复元素分值默认求和 zunion keycounts key1 key2 # 指定参与运算的集合及数量,并将结果存为新集合 zunionstore newKey keycounts key1 key2 # 完整zunion命令 zunion keycounts key [key ...] [weights weight [weight ...]] # 加权平均方式计算结果集各成员新分值,不指定默认均为1 [aggregate <sum | min | max>] # 计算重复元素的新分值:取重复成员加权分值和或加权最值 [withscores] # 展示结果集分数 # 完整zunionstore命令 zunionstore newkey keycounts key [key ...] [weights weight [weight ...]] [aggregate sum|min|max]
差集运算
zdiff keycounts key1 [key2 ...] [withscores] zdiffstore newkey keycounts key1 [key2 ...]
加减运算(加负数实现减法)
zincrby key num name
参考资料
黄健宏. Redis使用手册[M]. 1. 机械工业出版社, 2019.
Redis命令官方文档