Redis 常用命令
1 | #使用redis-cli连接到127.0.0.1 6379这个redis服务节点,集群模式需要加-c,输入密码加-a 后面可以直接接命令 |
1 基本
} 默认 16 个数据库,默认使用第 0 个
}
} 集群模式只能用第 0 个
命令 | 说明 |
---|---|
select dbNum | 选择数据库,如 select 0 选择第一个 |
dbsize | 查看当前数据库数据数量 |
flushdb | 清空当前数据库 |
flushall | 清空所有数据库 |
exists key | 判断 key 是否存在 |
move key dbNum | 把一个数据移动到指定的数据库,如 move key1 3,把 key1 移动到数据库 3 |
keys * | 查询当前数据库所有 key,*代表所有,也可以模糊匹配,如 keys a*,代表查询 a 开头的所有 key |
expire key seconds | 设置一个 key 多久过期,单位秒 |
ttl key | 查询一个 key 剩余到期时间 |
type key | 查看 key 的数据类型,如 string |
del key | 直接删除 |
unlink key | 懒删除 |
config get xxx | 获取指定配置参数 |
info | 查看服务节点信息,版本、主从、数据信息等 |
slaveof no one | 当前节点变为 master 节点 |
slaveof host port | 当前节点变为指定节点的从节点 |
2 字符串操作
命令 | 说明 |
---|---|
setex key seconds value | 设置一个 string 类型的数据,并指定过期时间,如果存在该数据,则覆盖,原子操作设置成功返回 OK |
setnx key value | 设置一个 string 类型的数据,只有 key 不存在的情况下才可成功设置,若 key 存在,不做任何操作。 成功返回 1,失败返回 0,通常用作分布式锁,但是建议 set key val nx ex…这样保证原子操作 |
set key value | 设置一个 string 类型的数据,如果存在,则覆盖,成功返回 OK 支持 NX 参数(不存在才成功),支持 EX 参数(过期秒)支持 PX 参数(过期毫秒) |
get key | 获取一个 string 类型的数据 |
append key value | 在一个 string 类型数据末尾添加数据,成功返回追加后的字符串长度 |
incr key | 自增 1,数据格式必须是数字,返回自增后的值 |
decr key | 递减 1,数据格式必须是数字,返回递减后的值 |
strlen key | 获得数据的 length |
getrange key start end | 获取数据并截取指定长度,索引 0 开始算, end 可用-1 代表最大 |
mset key1 v1 key2 v2… | 批处设置数据,set 的批量,成功返回 OK |
mget key1 key2 | 批量获取数据,get 的批量,成功返回相应值的列表 |
msetnx key1 v1 key2 v2… | setnx 的批量设置,必须全部 key 不存在,才能设置成功。成功返回 1,失败返回 0 |
getset key | 先获取原值,再设置新值,如果 key 不存在则返回 null 并设置新值 |
3 List 操作
本质上是一个双向链表
lpush + rpop = 先进先出队列
lpush + lpop = 压栈弹栈
命令 | 说明 |
---|---|
lpush key val1 val2 val3… | 向 key 头部添加元素 val1 val2 val3…,返回列表长度 |
rpush key val1 val2 val3… | 向 key 尾部添加元素 val1 val2 val3…,返回列表长度 |
lpop key | 查询头部元素,取出后移除该元素 |
rpop key | 查询尾部元素,取出后移除该元素 |
lrange key start end | 查询元素列表,索引 0 开始,end -1 代表最大 |
lindex key index | 按照索引查询指定的元素,0 开始 |
llen key | 查询队列的元素数量 |
lrem key count value | 移除指定的值, count } 0 代表从头部开始,移除 count 个 valuecount ${ 0 代表从尾端开始,移除 count 个 value 成功返回移除的数量 |
ltrim key start end | 截取,索引 0 开始,包括 end,而不是 end 之前。成功返回 OK |
rpoplpush key1 key2 | 将 key1 的尾端元素取出,添加到 key2 的头部,成功返回该元素 |
lset key index value | 根据索引指定元素,设置它的新数据 |
linsert key befrore value newVal | 在指定的 value 之前,插入新元素 newVal,成功返回元素总数 |
linsert key after value newVal | 至指定的 value 之后,插入新元素 newVal,成功返回元素总数 |
4 Set 操作
不可添加重复值的集合
命令 | 说明 |
---|---|
sadd key val1 val2… | 向 key 添加元素 val1 val2…重复值无效,返回添加个数 |
smembers key | 查询 key 里的所有元素 |
sismember key val | 查询 key 里是否有 val,存在返回 1,否则 0 |
scard key | 查询 key 中的元素总数 |
srandmember key count | 在 key 中随机查询 count 个元素,默认 count 1 |
spop key | 随机查询一个元素,并在 key 中移除 |
srem key val | 删除 key 中指定的值 val,成功返回 1 |
smove key1 key2 val | 将 key1 中的 val,移出到 key2,成功返回 1 |
sdiff key1 key2 | 以 key1 为准,查询 key1 中,key1 与 key2 的差集 |
sinter key1 key2 | 查询 key1 与 key2 的交集 |
sunion key1 key2 | 查询 key1 与 key2 的并集 |
5 Hash 操作
即一个 key 的值为 hashMap,这个 key 的值都是 k/v 键值对的 hashmap。
命令 | 操作 |
---|---|
hset mapkey key val | 在 mapkey 的 hashmap 中设置一个 key 为 k,value 为 v 的元素,成功返回增加元素的数量 |
hmset mapkey k1 v1 k2 v2 | 在 mapkey 的 hashmap 中,设置多个 k/v 元素,成功返回增加元素的数量 |
hget mapkey key | 在 mapkey 这个 hashmap 中,获取 key 的值 |
hmget mapkey k1 k2 | 在 mapkey 这个 hashmap 中,获取多个 key 的值 |
hdel mapkey k1 k2… | 删除 mapkey 这个 hashmap 中的 k1 k2 和相应的 value 成功返回删除数量 |
hgetall mapkey | 获取 mapkey 这个 hashmap 中,所有的 k/v 键值对 |
hkeys mapkey | 获取 mapkey 这个 hashmap 中所有的 key |
hlen mapkey | 获取 mapkey 这个 hashmap 中的元素数量 |
hincrby mapkey key incrNum | 在 mapkey 这个 hashmap 中,将 key 的值递增,递增数由 incrNum 决定(可以负数),成功返回自增后的值。 |
hsetnx mapkey key val | 在 mapkey 这个 hashmap 中,设置一个 key/val 键值对,如果存在则设置失败,与字符串的 setnx 同理。成功返回插入数量 1,否则 0 |
6 ZSet(Sorted Set)操作
有序集合
命令 | 说明 |
---|---|
zadd key score1 val1 score2 val2 | 向集合 key 添加元素,score 代表排序值,支持 NX 参数(不存在才添加元素,但不支持 EX 过期)。成功返回添加成功的元素总数 |
zrange key start end | 升序查询结果集,索引从 0 开始,参数 withscores 将把 score 加入结果集 |
zrevrange key start end | 降序查询结果集,索引从 0 开始 |
zrangebyscore key min max | 指定最小最大 score 值,升序查询,-inf 代表负无穷,+inf 代表正无穷,参数 withscores 将把 score 值加入结果集 |
zrevrangebyscore key max min | 指定最大最小 score 值,降序查询,与 zrangebyscore 同理 |
zrem key val… | 根据元素值删除元素,成功返回删除数量,否则 0 |
zincrby key incrNum val | 给 val 的 score 递增 incrNum(可为负数),成功返回递增后的值 |
zrank key val | 按照升序,查询 val 的 score 排名,val 不存在返回 null |
zrevrank key val | 按照降序,查询 val 的 score 排名 |
zcard key | 查询元素数量 |
zcount key min max | 根据 score 最小最大值,查询指定范围内元素的数量 |
7 哨兵模式常用操作
命令 | 说明 |
---|---|
INFO | sentinel 的基本状态信息 |
SENTINEL masters | 主服务器的当前状态 |
SENTINEL slaves ${master-name} | 从节点状态情况 |
SENTINEL sentinels ${master-name} | 列出指定主 redis 的监控哨兵信息,不包括他自己 |
SENTINEL get-master-addr-by-name ${master-name} | 返回给定名字的主服务器的 IP 地址和端口号 |
SENTINEL flushconfig | 将配置强制刷新到本地文件 |
sentinel monitor ${master-name}${master-ip} ${master-prot} 2 | 添加 master |
sentinel failover ${master-name} | 强制故障转移 |
8 集群模式常用操作
| 命令 | 说明 | |
| —————————————— | ————————————————- |
| CLUSTER INFO | 打印集群的信息 |
| CLUSTER NODES | 查看所有节点 |
| CLUSTER MEET ${ip} ${port} | 添加节点 |
| CLUSTER FORGET ${node id} | 移除节点 |
| CLUSTER REPLICATE ${node id} | 将当前节点设置为 node id 节点的从节点 |
| CLUSTER SAVECONFIG | 配置文件保存到硬盘里面 |
| CLUSTER ADDSLOTS ${slot} | 将一个或多个槽指派给当前节点 |
| CLUSTER DELSLOTS ${slot} | 当前节点移除一个或多个槽 |
| CLUSTER FLUSHSLOTS | 移除当前节点的所有槽 |
| CLUSTER SETSLOT ${slot} NODE ${node id} | 将槽指派给 node id 节点,如果槽被占用,需要提前移出 |
| CLUSTER SETSLOT ${slot} MIGRATING ${node id} | 将本节点的槽迁移到 node id 节点中 |
| CLUSTER SETSLOT ${slot} IMPORTING ${node id} | 从 node id 节点导入槽到本节点 |
| CLUSTER SETSLOT ${slot} | 取消对槽的导入或者迁移 |
| CLUSTER KEYSLOT ${key} | 计算键 key 应该被放置在哪个槽上 |
| CLUSTER COUNTKEYSINSLOT ${slot} | 返回槽 slot 目前包含的键值对数量 |
| CLUSTER GETKEYSINSLOT ${slot} ${count} | 返回 count 个 slot 槽中的键 |