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 | 最大元素的长度 |