1
2
#使用redis-cli连接到127.0.0.1 6379这个redis服务节点,集群模式需要加-c,输入密码加-a 后面可以直接接命令
/opt/redis/redis-cli -h 127.0.0.1 -p 6379 # -c -a qweasd

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 槽中的键 |

更多命令参考