跳转至

Redis Command Set

说明类

Redis Cluster模式: (1)连接redis-cli -c 需要带-c; (2)写入和变更操作需要在master节点 (3)dbsize指令之作用于当前节点实例, 全部节点的dbsize累加为dbsize总数; (4)keys * 仅查询本节点的实例的key

哨兵模式: (1)写入和变更操作需要在master节点 (2)dbsize指令之作用于当前节DB

redis_server

redis_server file

./redis_server ../redis.conf

启动redis服务

redis-server -v

./redis-server -v

查看redis版本信息

redis_sentinel file

./redis_sentinel ../sentinel.conf

redis-cli

redis-cli shutdown [redis]

./redis-cli -p 6379 -a abc@123 shutdown

redis-cli shutdown [sentinel]

./redis-cli -p 26379 shutdown

redis-cli info

./redis-cli -p 6379 -a abc@123 info

redis-cli info replication

./redis-cli -p 6379 -a abc@123 info replication

redis-cli cluster nodes

查询cluster nodes节点信息

./redis-cli -p 6379 -a abc@123 
> cluster nodes

redis-cli sentinel info

./redis-cli -p 26379 info sentinel

操作类

redis-cli: select

> select [db index]
> select 1

redis-cli:set

操作Key-Value值

> set [key] [value] EX [expire second]
> set test "hello world" EX 60

redis-cli:get

操作Key-Value值

> get [key]
> get test

redis-cli:del

操作Key-Value值

> del [key]
> del test

redis-cli:ttl

设置过期时间/永不过期

# 查询过期时间
> ttl [key]
> ttl test

redis-cli:expire

设置过期时间/永不过期

# 设置过期时间
> EXPIRE [key] [seconds]
> EXPIRE key 60

redis-cli:PERSIST

设置过期时间/永不过期

# 设置永不过期持久化
> PERSIST [key]
> PERSIST test

redis-cli: keys

查询全部key *(不建议)

# 模糊匹配查询Key
> keys [pattern]
> keys tes*

# 查询全部Key
# 不推荐,数据量大时禁用
>key * 

# 建议使用Scan指令

redis-cli:info:keyspace

查询Key数量

> info keyspace
# Keyspace
db0:keys=525,expires=275,avg_ttl=113571422797

> dbsize
(integer) 526

redis-cli:dbsize

查询Key数量

> dbsize
(integer) 526

模糊查询key

keys session*
scan 0 session* count 100

查询kv并重定向到文件

./redis-cli -p 6379 -a pwd@redis scan 0 count 10 >test.txt
./redis-cli -p 6379 -a pwd@redis keys '*' >test.txt

主动切换主从关系

# 哨兵模式,手动出发故障转移, 在当前master主节点执行
./redis-cli -p 26379 sentinel failover mymaster 

# 通用方式,兼容主从、哨兵、集群复制模式
# 非主节点执行,将当前服务器将升为主服务器
> SLAVEOF NO ONE

故障排查类

查询大Key

./redis-cli -p 6379 -a pwd@redis --bigkeys
# --bigkeys是Redis的一个命令行选项,它用于帮助你找出占用内存最大的key。

# 运行redis-cli --bigkeys时,Redis将会扫描整个数据库,找出并报告以下信息:
# 每种类型(string、list、set、zset、hash)的最大key。
# 每种类型的key的平均大小。
# 数据库中总的key数量。
# 每种类型的key的数量。

# 请注意,--bigkeys选项会扫描整个数据库,如果你的数据库非常大,这可能会花费一些时间,并且在扫描过程中,Redis的性能可能会有所下降。因此,你应该在低峰时段或者在备份服务器上运行这个命令

# 该指令并不能准确判断大key, 只作为参考。

慢查询日志功

# SLOWLOG GET [N]
# 返回最新的N条慢查询记录。如果N省略,返回10条
> slowlog get 5

# 结果说明
唯一的递增ID
执行命令的Unix时间戳
执行命令的微秒数
执行的命令和参数
客户端IP和端口
客户端名称

# 慢查询日志的长度,默认128
> slowlog len

# 清空慢查询日志,风险操作
> SLOWLOG RESET

# 设置慢查询阈值,单位是微秒。如果执行命令的时间超过这个阈值,就会被记录到慢查询日志。默认值是10000微秒(即10毫秒)。如果设置为-1,将禁用慢查询日志.
> CONFIG SET slowlog-log-slower-than [microseconds]
> CONFIG SET slowlog-log-slower-than 50000

# 设置慢查询日志的最大长度。如果新的慢查询记录导致日志长度超过这个值,最旧的记录将被删除。默认值是128.
> CONFIG SET slowlog-max-len [N]
> CONFIG SET slowlog-max-len 200

请求监控指令

# MONITOR命令用于实时监控Redis服务器接收到的所有请求。可以帮助你理解发生了什么,但是它也会消耗大量的CPU和内存资源,因此在生产环境中应谨慎使用。
> MONITOR

# 结果说明
1619451487.109375 [0 127.0.0.1:52378] "SET" "key" "value"
1619451488.111375 [0 127.0.0.1:52378] "GET" "key"

# 在这个例子中,1619451487.109375是请求的时间戳,0是数据库的编号,127.0.0.1:52378是客户端的地址和端口,"SET" "key" "value"和"GET" "key"是执行的命令和参数。

# 注意:当你运行MONITOR命令后,你的客户端将会进入一个特殊的模式,所有通过Redis服务器的请求都会被打印出来。每条消息都包含了请求的时间戳、客户端的地址和端口、执行的命令和参数,不建议使用。

# 要退出MONITOR模式,你可以使用Ctrl+C或者关闭你的客户端

Redis 禁用指令和开启flushall和flushdb

Redis存在一些高风险指令,通常会禁止使用,比如FLUSHALL,FLUSHDB

FLUSHALL和FLUSHDB的区别

FLUSHDB 和 FLUSHALL 是 Redis 中用于清空数据库的两个命令,但它们的作用范围不同。 FLUSHDB: 仅清空当前选择的数据库(db) FLUSHALL: 删除 Redis 实例中的所有数据库中的所有键值对;

禁用指令配置

# vim redis.conf
# 重命名 FLUSHDB 命令为一个不存在的命令
rename-command FLUSHDB ""

# 重命名 FLUSHALL 命令为一个不存在的命令
rename-command FLUSHALL ""
# 重启redis即可

开启redis被禁用的指令

# vim redis.conf
# 重命名 FLUSHDB 命令为一个不存在的命令
# rename-command FLUSHDB ""

# 重命名 FLUSHALL 命令为一个不存在的命令
# rename-command FLUSHALL ""

# 注释配置然后重启redis即可,使用指令