zoukankan      html  css  js  c++  java
  • Redis专题——Redis管理工具

    一、安全性

    1、运行环境

    Redis以简洁为美,其安全性没有太多操作,要求在生产系统中外界不能直接连接Redis进行操作,而必须经过程序中转后,由程序进行操作。

    即,redis要求运行在可信的环境中。

    redis服务器启动后,默认允许外界连接,可以修改其配置文件的bind,配置只能有一个路径进行连接,如bind 127.0.0.1,只允许本机连接。bind只能配置一个ip,因此设置应在防火墙中进行。

    2、密码

    配置文件中有requirepass,可以设置密码。则每次连接上之后,需要先用AUTH 密码,验证后再进行操作。但是由于redis性能极高,因此有可能会被攻击者用穷举法破解,因此密码要设置的尽量复杂。

    如果主从结构的主库设置了密码,从库要在配置文件中的masterauth中,输入密码,以便从库正常连上主库。

    3、命令修改

    redis支持在配置文件对命令进行重命名,如flushall会清空redis,可以在配置文件中输入rename-command FLUSHALL xxxxx,这个xxxxx应该设置的足够复杂,则要使用flushall,必须用xxxxx来代替。如果要禁用命令,直接rename成空字符串即可。

    二、通信协议

    redis支持两种通信协议:一是二进制安全的统一请求协议;二是比较直观的便于在程序中直接输入的telnet协议。这两种命令的接收到的返回值一样。

    1、telnet

    当使用telnet连接上redis服务器后,可以像redis-cli那样对redis输入命令,不过接收到的redis返回是原生的返回,而不是redis-cli上看到的返回。

    1)状态回复

    以加号+开头,后面跟上状态信息, 结尾,如+OK 。

    2)错误回复

    以减号-开头,后面跟上错误信息,以 结尾。

    3)整数回复

    以冒号:开头,后面跟上数字, 结尾。

    4)字符串回复

    以美元$开头,后面跟上字符串的长度,然后是 ,字符串内容, 。

    如$5 Hello 。如果键没有设定,在redis-cli返回nil,在此则会返回$-1,以和空字符串区别。

    5)多行字符串回复

    以*开头,跟上字符串的个数,加上 ,后面就是和字符串回复一样。

    如*2 $5 Hello $5 World 。

    2、统一请求协议

    统一请求协议的请求方式,和telnet里面收到的redis的多行字符串回复一样,先是字符串的个数,接下来是每个字符串的长度和具体内容,并且每个都用 分隔开。

    例如redis-cli里面输入get key,则发送的是*3 $3 get $3 key 。

    统一请求协议收到的返回值和telnet一致。

    redis的AOF文件和主从复制中的主数据库向从数据库发送内容,都采用统一请求协议。

    三、管理工具

    1、基本工具——redis-cli

    1)耗时命令查询

    通过配置文件,可以配置执行redis的命令超过多长时间时,记录执行的命令等信息共开发人员分析,配置参数slowlog-log-slower-than 微秒。1秒是106微秒,参数默认值是104,即超过0.01秒的执行命令都会计入log。

    用slowlog get获取当前的耗时命令的日志,每个日志由4部分组成:日志唯一id、命令开始执行的unix时间、命令执行耗时(微秒)、完整命令及参数。

    当设置为0则记录所有命令,设置为负数则关闭。

    2)命令监控

    MONITOR。输入此命令后,会收到redis返回的OK。此后,任意客户端对此redis服务器进行的操作,都会在此输出。这样非常耗性能(消耗将近一半的负载),因此只用于调试和纠错。

    有基于monitor开发的开源脚本redis-faina.py,可以分析在服务器上最常用的命令、最频繁使用的键等信息。

    2、phpRedisAdmin

    该工具类似phpmyadmin,是用php开发的redis监控管理工具。其依赖于PRedis,因此需要先安装PRedis,再安装phpRedisAdmin。

    默认连到127.0.0.1:6379,可以在项目include文件夹的config.inc.php进行修改。

    配置好nginx和php后,把phpredisadmin放到网站根目录即可访问。phpredisadmmin将redis的键以树型展开,点击某个键可以查看键的值、键的类型、键的过期时间、键的大小、键的编码方式等,还可以编辑。

    由于该工具采用keys*命令获取键,再对每个键采用TYPE获取类型,而redis又是单线程的,因此这样效率不高,不适合在生产环境使用。

    3、Rdbtools

    这个工具是redis的文件快照(rdb文件)的解析器,根据快照的rdb文件,将其导出成json文件,分析每个键占用空间情况。另外,可以导出到csv,并且可以从csv导入到excel,对结果进行分析。

    转载:https://cloud.tencent.com/developer/article/1053767

  • 相关阅读:
    POJ 2175 Evacuation Plan 费用流 负圈定理
    POJ 2983 Is the Information Reliable? 差分约束
    codeforces 420B Online Meeting
    POJ 3181 Dollar Dayz DP
    POJ Ant Counting DP
    POJ 1742 Coins DP 01背包
    中国儒学史
    产品思维30讲
    Java多线程编程核心技术
    编写高质量代码:改善Java程序的151个建议
  • 原文地址:https://www.cnblogs.com/zmdComeOn/p/11704882.html
Copyright © 2011-2022 走看看