命令官网
英文版:https://redis.io/commands/
中文版:http://redis.cn/commands.html/
1.1 类型说明
1.2 Key命令
命令不区分大小写,但是key区分
命令 说明
keys * //展示当前库的所有key
exists key //判断某个key是否存在
type key //查看你的key是什么类型
del key //删除指定的key数据
unlink key //非阻塞删除,仅仅将keys从keyspace元数据中删除,没真正的删除会在后续异步中操作
ttl key //查看还有多少秒过期 -1表示永不过期 -2 表示已过期
expire key 秒 //给key设置过期时间
move key [0-15] // 将当前数据库的key移动到指定的数据库中,redis默认是有16个数据库的
select [0-15] // 切换数据库[0-15],默认为0
dbsize // 查看当前数据库key的数量
flushdb // 清空当前库
flushall // 清空16个数据库 慎用
Redis 的过期时间设置有四种形式:
EXPIRE 秒——设置指定的过期时间(秒),表示的是时间间隔。
PEXPIRE 毫秒——设置指定的过期时间,以毫秒为单位,表示的是时间间隔。
EXPIREAT 时间戳-秒——设置指定的 Key 过期的 Unix 时间,单位为秒,
表示的是时间/时刻。
PEXPIREAT 时间戳-毫秒——设置指定的 Key 到期的 Unix 时间,
以毫秒为单位,表示的是时间/时刻。
1.3 String(字符串)操作命令
SET 设置
格式:set 参数1 参数2 [参数3] [参数4] [参数5]
参数1:key名称
参数2:value
参数3:NX | XX
参数4:GET
参数5:EX seconds | PX milliseconds |
EXAT unix-time-seconds | PXAT unix-time-milliseconds | KEEPTTL
set key value [NX|XX] [GET] [EX seconds|PX milliseconds|EXAT unix-time-seconds|PXAT unix-time-milliseconds|KEEPTTL]
参数说明表
示例:
设置k1的value为hello:
set k1 hello
如果k2存在直接返回nil,如果k2不存在,设置k2的value为hello:
set k2 hello NX
如果k3不存在直接返回nil,如果k3存在,设置k3的value为"hello":
set k3 hello XX
先返回k4原来的value再将k4的value修改为hello,如果k4不存在返回值为nil:
set k4 hello get
设置k5的value为hello,并在10秒后过期:
set k5 hello ex 10
设置k6的value为hello,并在500毫秒后过期:
set k6 hello px 500
设置k7的value为hello,并在到达时间戳1783219280秒过期:
set k7 hello exat 1783219280
设置k8的value为hello,并在到达时间戳1783219461238毫秒过期:
set k8 hello exat 1783219461238
设置k9的value为hello,并保留k9原先设定的过期时间:
set k9 hello keepttl
GET 查询
格式:get 参数1
参数1:key名称
获取key为kk的value
get kk
GETSET 查询后设置
格式:getset 参数1 参数2
参数1:key名称
参数2:内容
示例:
先返回k1原来的value,再将value设置为hello
getset k1 hello
SETEX 过期值设置
格式:setex 参数1 参数2 参数3
参数1:key名称
参数2:秒
参数3:内容
示例:
设置k1的值为hello并在10秒后过期
setex k1 10 hello
SETNX 冲突设置
格式:setnx 参数1 参数2
参数1:key名称
参数2:内容
示例:
如果k1不存在,设置k1的值为hello
setnx k1 hello
MGET 批量查询
格式:mget 参数1
参数1:key列表
示例:
获取k1、k2的value
mget k1 k2
MSET 批量设置
格式:MSET 参数1
参数1:键值对列表
示例:
设置k1的value为v1、k2的value为v2
mset k1 v1 k2 v2
MSETNX NX规则批量设置
格式:MSETNX 参数1
参数1:键值对列表
示例:
如果不存在k1、k2(需都成立),则设置k1的value为v1、k2的value为v2
msetnx k1 v1 k2 v2
GETRANGE 精准截取
格式:getrange 参数1 参数2 参数3
参数1:key名称
参数2:起始位置
参数3:终止位置
示例:
获取key的value,并返回value的0 - 5位置上的字符
getrange key 0 5
SETRANGE 精准设置
格式:setrange 参数1 参数2 参数3
参数1:key名称
参数2:起始位置
参数3:字符串
示例:
将hello设置到k1对应value的索引1位置
setrange k1 1 hello
INCR 自增查询
格式:incr 参数1
参数1:key名称
注:这里的key对应的value必须是数字整型
示例:
使k1的value自增1并返回自增后的值
incr k1
INCRBY 增加查询
格式:incrby 参数1 参数2
参数1:key名称
参数2:数字整型
注:这里的key对应的value必须是数字整型
示例:
使k1的value增加5并返回增加后的值
incrby k1 5
DECR 自减查询
格式:decr参数1
参数1:key名称
注:这里的key对应的value必须是数字整型
示例:
使k1的value自减1并返回自增后的值
decr k1
DECRBY 减少查询
格式:decrby 参数1 参数2
参数1:key名称
参数2:数字整型
注:这里的key对应的value必须是数字整型
示例:
使k1的value减少5并返回减少后的值
decrby k1 5
STRLEN 获取字符串长度
格式:strlen 参数1
参数1:key名称
获取k1的value字符串长度
strlen k1
APPEND 追加内容
格式:append 参数1 参数2
参数1:key名称
参数2:内容
将hello追加到k1的value后
append k1 hello
1.4 List(集合)操作命令
LPUSH 左端插入
格式:lpush 参数1 参数2
参数1:list名称
参数2:插入的数据,可以是多个用空格隔
示例:
在list1左端依次插入hello、world
lpush list1 hello world
RPUSH 右端插入
格式:rpush 参数1 参数2
参数1:list名称
参数2:插入的数据,可以是多个用空格分隔
示例:
在list1右端依次插入hello、world
rpush list1 hello world
LRANGE 检索列表
格式:lrange 参数1 参数2 参数3
参数1:list名称
参数2:起始索引
参数3:终止索引
示例:
检索list1索引0到3的数据
lrange list1 0 3
检索list2的所有数据
lrange list2 0 -1
LPOP 左端弹出
格式:lpop 参数1 [参数2]
参数1:list名称
参数2:数量
示例:
弹出list1左端第1条数据
lpop list1
弹出list1左端起3条数据
lpop list1 3
RPOP 右端弹出
格式:rpop 参数1 [参数2]
参数1:list名称
参数2:数量
示例:
弹出list1右端第1条数据
rpop list1
弹出list1左端起2条数据
rpop list1 2
LINDEX 检索指定索引数据
格式:lindex 参数1 参数2
参数1:list名称
参数2:索引
示例:
检索list1索引为5的数据
lindex list1 5
LLEN 检索数量
格式:llen 参数1
参数1:list名称
示例:
检索list1数据的条数
llen list1
LREM 删除值
格式:lrem 参数1 参数2 参数3
参数1:list名称
参数2:数量
参数3:指定值
示例:
在list1中删除5条值为hello的数据
lrem list1 5 hello
LTRIM 截取赋值
格式:ltrim 参数1 参数2 参数3
参数1:list名称
参数2:起始索引
参数3:终止索引
示例:
截取list1索引1到5的数据,将截取片段替换为list1的value
ltrim list1 1 5
RPOPLPUSH 弹出插入
格式:rpoplpush 参数1 参数2
参数1:list名称
参数2:list名称
示例:
将list1右端数据弹出,并将该数据压入list2的左端
rpoplpush list1 list2
LSET 修改
格式:lset 参数1 参数2 参数3
参数1:list名称
参数2:索引
参数3:值
示例:
将list1索引为0的值修改为hello
lset list1 0 hello
LINSERT 插入
格式:linsert 参数1 参数2 参数3 参数4
参数1:list名称
参数2:before | after
参数3:已有值
参数4:新值
示例:
在list1插入一个新值world位置在hello前面
linsert before hello world
在list2插入一个新值world位置在hello后面
linsert after hello world
1.5 Hash(哈希)操作命令
HSET 设置
格式:hset 参数1 参数2
参数1:hash名称
参数2:键值对
示例:
在user01中添加一个键值对key为id、value为1
hset user01 id 1
HGET 获取
格式:hget 参数1 参数2
参数1:hash名称
参数2:内部key
获取user01的id
hget user01 id
HMSET 批量设置
格式:hmset 参数1 参数2
参数1:hash名称
参数2:键值对(可以多个使用空格分隔)
示例:
在user01中添加一个id值为1、name值为zhangsan
hmset user01 id 1 name zhangsan
HMGET 批量获取
格式:hmget 参数1 参数2
参数1:hash名称
参数2:内部key(可以多个使用空格分隔)
示例:
获取user01的id和name
hmget user01 id name
HGETALL 获取所有
格式:hgetall 参数1
参数1:hash名称
示例:
获取user001的所有内容
hgetall user001
HLEN 获取长度
格式:hlen 参数1
参数1:hash名称
示例:
获取user001的键值对数量
hlen user001
HDEL 删除键值对
格式:hdel 参数1 参数2
参数1:hash名称
参数2:内部key
示例:
删除user001的name键值对
hdel user001 name
HEXISTS 存在检索
格式:hexists 参数1 参数2
参数1:hash名称
参数2:内部key
示例:
检索user001是否存在name键
hexists user001 name
HKEYS 获取所有键
格式:hkeys 参数1
参数1:hash名称
示例:
获取user001的所有key
hkeys user001
HVALS 获取所有值
格式:hkeys 参数1
参数1:hash名称
示例:
获取user001的所有value
hvals user001
HINCRBY 整数加法
格式:hincrby 参数1 参数2 参数3
参数1:hash名称
参数2:内部key
示例:
对user001中age的value增加1
hincrby user001 age 1
HINCRBYFLOAT 浮点数加法
格式:hincrbyfloat 参数1 参数2 参数3
参数1:hash名称
参数2:内部key
示例:
对user001中score的value增加0.5
hincrby user001 score 0.5
HSETNX NX规则设置
格式:hsetnx 参数1 参数2
参数1:hash名称
参数2:键值对
示例:
如果user01中不存在id,则添加一个键值对key为id、value为1
hsetnx user01 id 1
1.6 Set(集合)操作命令
SADD 添加元素
格式:sadd 参数1 参数2
参数1:set名称
参数2:元素(可以多个使用空格分隔)
示例:
将hello、world添加到set1
sadd set1 hello world
SMEMBERS 遍历
格式:smembers 参数1
参数1:set名称
示例:
遍历set1
smembers set1
SISMEMBER 存在判断
格式:sismember 参数1 参数2
参数1:set名称
参数2:元素
示例:
判断hello是否存在于set1
sismember set hello
SREM 删除
格式:srem 参数1 参数2
参数1:set名称
参数2:元素
示例:
在set1中删除hello
srem set1 hello
SCARD 检索元素个数
格式:scard 参数1
参数1:set名称
示例:
检索set1中元素个数
scard set1
SRANDMEMBER 随机展示
格式:srandmember 参数1 参数2
参数1:set名称
参数2:数量
示例:
在set1随机展示2个元素
srandmemeber set1 2
SPOP 随机弹出
格式:spop 参数1 参数2
参数1:set名称
参数2:数量
示例:
在set1 随机弹出2个元素
spop set1 2
注:spop与srandmember区别在于spop会将元素删除
SMOVE 元素移动
格式:smove 参数1 参数2 参数3
参数1:数据源set名称
参数2:接收set名称
参数3:元素
示例:
将set1中的hello移动到set2
smove set1 set2 hello
SDIFF 差集
格式:sdiff 参数1 参数2
参数1:被差运算set
参数2:差运算set(可以多个用空格分隔)
示例:
检索在set1和set2中set1独有的元素
sdiff set1 set2
SUNION 并集
格式:sunion 参数1 参数2
参数1:set名称
参数2:set名称(可以多个用空格分隔)
示例:
检索set1、set2合并后的集合
sunion set1 set2
SINTER 交集
格式:sinter 参数1 参数2
参数1:set名称
参数2:set名称(可以多个用空格分隔)
示例:
检索set1和set2共有的元素,返回结果集
sinter set1 set2
SINTERCARD 交集(redis7新命令)
格式:sintercard 参数1 参数2 参数3
参数1:参与的set数量
参数2:参与的set名称(每个用空格分隔)
参数3:limit限制
示例:
检索set1和set2共有的元素,返回数量
sintercard 2 set1 set2
检索set1和set2共有的元素,返回数量,且数量作最大限制为10
sintercard 2 set1 set2 limit 10
1.7 Zset(有序集合)操作命令
ZADD 添加
格式:zadd 参数1 参数2 参数3
参数1:zset名称
参数2:zset元素(score value)(可以多个使用空格分隔)
示例:
在zset1添加一个元素score为60、value为hello
zadd zset1 60 hello
ZRANGE 遍历
格式:zrange 参数1 参数2 参数3 [参数4]
参数1:zset名称
参数2:起始索引
参数3:终止索引
参数4:withscores
示例:
遍历zset1所有元素
zrange zset1 0 -1
附带分数遍历zset2所有元素
zrange zset2 0 -1 withscores
ZREVRANGE 反转遍历
格式:zrecrange 参数1 参数2 参数3 [参数4]
参数1:zset名称
参数2:起始索引
参数3:终止索引
参数4:withscores
示例:
反转遍历zset1所有元素
zrevrange zset1 0 -1
附带分数反转遍历zset2所有元素
zrevrange zset2 0 -1 withscores
ZRANGEBYSCORE 分数范围选取
格式:zrangebyscore 参数1 参数2 参数3 参数4 参数5
参数1:zset名称
参数2:最低分
参数3:最高分
参数4:withscores
参数5:limit 起始索引 步长
示例:
检索zset1中60到100分的元素
zrangebyscore zset1 60 90 withscores
附带分数检索zset1中60到100分的元素
zrangebyscore zset1 60 90 withscores
检索zset1中60到100分的元素,限制从0开始步长为2
zrangebyscore zset1 60 90 limit 0 2
ZSCORE 检索分数
格式:zscore 参数1 参数2
参数1:zset名称
参数2:元素
示例:
检索zset1中v1元素的分数
zscore zset1 v1
ZCARD
格式:zcard 参数1
参数1:zset名称
示例:
检索zset1元素个数
zcard zset1
ZREM 删除
格式:zrem 参数1 参数2
参数1:zset名称
参数2:元素(可以多个使用空格分隔)
示例:
删除zset1中v1、v2元素
zrem zset1 v1 v2
ZINCRBY 增加分数
格式:zincrby 参数1 参数2 参数3
参数1:zset名称
参数2:分数
参数3:元素
示例:
将zset1中的v1元素的分数增加5分
zincrby zset1 5 v1
ZCOUNT 检索指定分数范围中的元素个数
格式:zcount 参数1 参数2 参数3
参数1:zset名称
参数2:最低分
参数3:最高分
示例:
检索zset1中60到100分的元素个数
zcount zset1 60 100
ZMPOP 弹出
格式:zmpop 参数1 参数2 参数3 参数4
参数1:数量(zset数量)
参数2:zset名称(使用空格分隔)
参数3:max | min
参数4:数量(弹出数量)
示例:
从zset1、zset2中弹出2个最小的元素
zmpop 2 zset1 zset2 min 2
ZRANK 检索索引
格式:zrank 参数1 参数2
参数1:zset名称
参数2:元素
示例:
检索zset1中v1的索引号
zrank zset1 v1
ZREVRANK 检索反转索引
格式:zrevrank 参数1 参数2
参数1:zset名称
参数2:元素
示例:
反转检索zset1中v1的索引号
zrevrank zset1 v1