• redis使用基础(七) ——Redis管理


    redis使用基础(七)

    ——Redis管理

     

    (转载请附上本文链接——linhxx)

     

    一、安全性

    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,对结果进行分析。

    ——written by linhxx

    更多最新文章,欢迎关注微信公众号“决胜机器学习”,或扫描右边二维码。

    博客园这边,我会定期批量发布文章,如果想要实时看到最新的文章,欢迎关注微信公众号"决胜机器学习",里面有我最新的文章。linhxx
  • 相关阅读:
    [Abp vNext 源码分析]
    C# 结合 PInvoke 对接 IP 摄像头的笔记
    Abp vNext 自定义 Ef Core 仓储引发异常
    [Abp vNext 源码分析]
    [Abp vNext 源码分析]
    [Abp vNext 源码分析]
    网站SEO中服务器优化的三个问题
    用香港服务器还是国内服务器好
    租用香港服务器最重要的三个问题
    如何选择服务器操作系统
  • 原文地址:https://www.cnblogs.com/linhxx/p/8412899.html
Copyright © 2020-2023  润新知