Redis管理:安全/耗时命令日志与命令监控/数据库管理工具

时间:2022-12-05 08:55:36

1、安全管理

1)绑定指定IP

Redis的安全设计是在“Redis运行在可信环境”这个前提之下的,在生产环境中建议通过应用程序连接Redis。Redis可以配置只接受来自指定IP的的请求,可通过修改配置文件中的bind来实现,如下:

bind 127.0.0.1

2)设置密码

除此之外,还可以配置requirepass选项来设置密码,如:

requirepass root

配置好重启后ping一下试试

> ping
(error) NOAUTH Authentication required.
> auth root
OK
> ping
PONG

设置了密码之后,jedis需要这么连接Redis

public static void main(String[] args) {
    Jedis jedis = new Jedis("localhost");
    jedis.auth("root");
    System.out.println(jedis.ping());
}

 3)重命名命令

Redis还允许通过配置rename-command重命名命令,如keys *这样的命令在数据量较大的正式环境运行的时候会导致数据库CPU飙升、数据库锁住甚至宕机的后果,因此可以可以修改命令避免该命令被误用。

开启此项功能,需要配置:

rename-command ping iamping

结果:

> ping
(error) ERR unknown command `ping`, with args beginning with:
> iamping
PONG

2、耗时命令日志与命令监控

1)耗时命令日志

当一条命令执行的时间超过限制的时候,redis会将其加入耗时命令日志供开发者查看。相关的配置如下:

slowlog-log-slower-than 10000 //时间限制,超过时间的加入日志(单位是微秒,即1 000 000相当于1s)
slowlog-max-len 128 //限制记录的条数

查看耗时命令日志的方式:

> slowlog get
   ) (integer)
   ) (integer)
   ) (integer)
   ) ) "flushall"
   ) "127.0.0.1:33234"
   ) ""

每条日志的格式如下:

()该日志唯一ID
()该命令的UNIX时间
()该命令的耗时时间,单位是微秒
()命令及其参数
()请求的IP及端口

2)命令监控

redis提供monitor命令来监控redis执行的所有命令,因为该命令严重影响性能,只适合开发人员调试。

应用如下,开启两个客户端,一个输入monitor,然后在另一个客户端执行get命令,monitor的客户端显示如下:

> monitor
OK
 ] "get" "foo"

 3、phpRedisAdmin

这个工具支持树形结构查看键列表,编辑键值,导入/导出数据库数据,查看数据库信息和查看键信息,类似于Mysql的phpMyAdmin工具,可以在github上下载安装。

4、Rdbtools

Rdbtools是一个Redis的快照文件解析器,可以根据快照文件导出JSON数据文件、分析redis中每个键的占用空间情况。下载安装见github。

使用步骤:

()使用save命令生成快照文件
()将快照导出为JSON格式
rdb --command json /path/to/dump.rdb > output_filename.json
 ()生成空间使用情况报告
rdb -c memory /path/to/dump.rdb > out_filename.csv

csv文件字段说明

字段 说明
database 存储该键的数据库索引
type 键类型(使用type命令获得)
key 键名
size_in_bytes 键大小(字节)
encoding 内部编码(通过OBJECTENCODING获得)
num_elements 键的元素数
len_largest_element 最大元素的长度