[一]redis的安全
--->redis的简洁美,使得redis的安全设计是在“redis运行在可信环境”这个前提下做出来,。
--->在生产环境运行时不能允许外界直接链接到redis,而应该通过应用程序中转。
--->redis默认配置会接受来自任何地址发来的请求。
--->如直允许本机链接redis,则可以经配置文件中的bind参数改为:127.0.0.1
--->bind 参数只能绑定一个地址,如果想更自由地设置访问规则需要通过防火墙完成。
[二]数据库密码
--->在配置文件中通过requirepass参数:为redis设置一个密码
--->如果redis设置了密码,客户端每次链接到redis都需要发送密码。否则redis会拒绝执行客户端发来的命令。
(1)修改配置文件设置密码,并启动redis服务
(2)启动redis后尝试操作键,报错,输入密码后,操作键,即可。
[三]命名命令
--->redis支持在配置文件中将命令重命名.
--->命令格式:rename-command 旧命名名字 新命令名字
--->禁用某些命令的名字:rename-command 旧命名名字 ""
--->无论设置密码,还是重命名命令名字,都需要保证配置文件的安全性,否则一切都没有意义。
[四]redis的通信协议
--->redis支持两种通信协议。
--->一种是二进制安全的统一请求协议(unified request protocol)
--->另一种比较直观的便于在telnet程序中输入的简单协议。
(1)简单协议:命令和各个参数之间用空格隔开.比如 set shang xiaofei
(2)统一请求协议:比如:set foo bar 写法:*3\r\n$3\r\nSET\r\n$3\r\nfoo\r\n$3\r\nbar\r\n
同样发送命令的时候指定了后面字符串的长度,所以命令的每隔参数都可以包含二进制的字符。统一请求协议的返回值格式和简单协议一样。
redis的aof文件和主从复制时主数据库向从数据库发送的内容都使用了统一请求协议。
[五]耗时命令日志
--->当一条命令执行时间超过限制,Redis会将该命令的执行时间等信息加入耗时命令日志(slow log)以供开发者查看。
--->通过配置文件的slowlog-log-slower-than参数设置这一限制。要注意单位是微秒(1000000微秒相当于1秒)默认是10000.
--->耗时命令日志存储在内存中,可以通过配置文件的slowlog-max-len参数限制记录的条数。
--->获取当前耗时命令的日志:SLOWLOG GET
每条日志都由以下四部分组成
(1)该日志的唯一id
(2)该命令执行的Unix时间
(3)该命令耗时时间,单位是微秒。
(4)命令及参数
[命令监控]
--->redis提供了MONITOR命令来监控Redis执行的所有命令,redis-cli同样支持这个命令。
--->执行MONITOR,这时所有在redis执行的所有命令都会在redis-cli中打印出来。
--->MONITOR命令非常影响redis性能,一个客户端使用MONITOR命令会降低redis将近一半的负载能力,所以 MONITOR命令只适合用来调试和纠错。