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)状态回复

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

2)错误回复

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

3)整数回复

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

4)字符串回复

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

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

5)多行字符串回复

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

如*2\r\n$5\r\nHello\r\n$5\r\nWorld\r\n。

2、统一请求协议

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

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

统一请求协议收到的返回值和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

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

原文地址:https://www.cnblogs.com/linhxx/p/8412899.html

时间: 2024-10-18 19:18:09

redis使用基础(七) ——Redis管理的相关文章

redis使用基础(九) ——Redis虚拟内存

redis使用基础(九) --Redis虚拟内存 (转载请附上本文链接--linhxx) 一.概述 Redis的数据是保存在内存中,当物理内存不足,其会保存在虚拟内存(VM)中.Redis的vm类似操作系统的vm,其会把所有的键都存在内存中,而把部分很少被访问到的值放在硬盘中. 操作系统的vm是基于页的概念,linux每个页4KB,而redis很多对象远小于4KB.另外,redis将交换到磁盘的对象压缩,保存到磁盘的对象可以去除指针和对象元数据,这样可以减少很多的I/O操作. redis的虚拟内

redis使用基础(六) ——Redis集群

redis使用基础(六) --Redis集群 (转载请附上本文链接--linhxx) 一.单台服务器 单台redis服务器,会出现单点故障,且需要承受所有的负载.另外,所有的内容都存在单个服务器上,该服务器会成为瓶颈. 使用多台服务器作为redis服务器,需要考虑集群管理,如数据一致性.增加节点.故障恢复等问题.redis对处理这些问题有一套方案. 二.复制 redis的持久化功能保证了数据的持久性,但是如果服务器故障,数据还是可能会丢失,因此需要将数据备份到其他服务器.当一台服务器内容更新,会

redis使用基础(一) ——Redis基本概述与安装配置

redis使用基础(一) --Redis基本概述与安装配置 (转载请附上本文链接--linhxx) 一.特性 1.存储方式 Redis采用Key-Value类型进行存储,数据存储在内存中,不存在硬盘中,由于避开了I/O,因此读写速度比关系型数据库快很多,普通的笔记本每秒可以读写超过10万个键值. 2.持久性 为了避免存在内存中导致的程序退出后数据丢失问题,Redis提供将数据异步写入硬盘,不影响继续提供服务. 3.灵活性 Redis可以为每个键设置生存时间,到期后自动删除.就此而言可以将其用作缓

Redis一点基础的东西

目录 1.基础底层数据结构 2.windows下环境搭建 3.java里连接redis数据库 4.关于认证 5.redis高级功能总结 1.基础底层数据结构 1.1.简单动态字符串SDS 定义: struct sdshdr{ int len; int free; char buf[]; } 优势: 为了重用部分C语言函数库功能,在buf里存储了空字符'\0',但是不同于C char[]的是: 取sds长度时,直接从len中获取,不是像C中遍历buf,直到遇到空字符结束. 在改变sds内容时,如果

也木有那么“高富帅”----Redis核心基础学习

由于工作慢慢从原来的少量用户的企业内部应用慢慢转化为了大量用户的企业内部应用或者直接转为了线上高并发应用,因而也渐渐的开始使用memcached.Redis等缓存服务器,为了便于自身的学习和记忆,特此成文.本文以window下的redis使用为例,实际中redis服务器会搭建在Linux服务器上. Redis核心特性简洁 借鉴知乎大牛的评价,Redis的快是因为:单进程单线程的避免了不必要的上下文切换和竞争条件:其绝大多数操作都是内存操作,虽然也支持虚拟内存:非阻塞IO.. 需要理解的几个知识点

Redis Cluster的实现和管理

Redis Cluster在redis3.0版本以上开始支持,以ruby环境运行.他可以把多个redis实例整合在一起,形成一个集群,集群内分配slot(分片槽),实现数据的分片存放.客户端只要以集群的模式连接上集群内任意一个节点,就可以操作整个集群. 集群角色有Master和Slave.Master之间分配slots,一共16384个slot.Slave向它指定的Master同步数据,实现备份.当其中的一个Master无法提供服务时,该Master的Slave讲提升为Master,保证集群间s

redis学习教程四《管理、备份、客户端连接》

redis学习教程四<管理.备份.客户端连接> 一:Redis服务器命令 Redis服务器命令 下表列出了与Redis服务器相关的一些基本命令. 序号 命令 说明 1 BGREWRITEAOF 异步重写仅追加的文件 2 BGSAVE 将数据集异步保存到磁盘 3 CLIENT KILL [ip:port] [ID client-id] 杀死或断开指定的客户端的连接 4 CLIENT LIST 获取到服务器的客户端连接列表 5 CLIENT GETNAME 获取当前连接的名称 6 CLIENT P

Redis系统学习 五、管理

在最后一章里,我们将集中谈论Redis运行中的一些管理方面内容.这是一个不完整的Redis管理指南,我们将会回答一些基本的问题,初接触Redis的新用户可能会很感兴趣. 配置(Configuration) 当你第一次运行Redis的服务器,它会向你显示一个警告,指redis.conf文件没有被找到.这个文件可以被用来配置Redis的各个方面.一个充分定义(well-documented)的redis.conf文件对各个版本的Redis都有效.范例文件包含了默认的配置选项,因此,对于想要了解设置在

基础拾遗------redis详解

基础拾遗 基础拾遗------redis详解 基础拾遗------反射详解 基础拾遗------委托详解 基础拾遗------接口详解 基础拾遗------泛型详解 前言 这篇文章和以往的基础拾遗有所不同,以前的介绍的都是c#基础,今天介绍的是redis.因为项目中一只在使用,我想现在大部分项目中都会用到nosql,缓存,今天就介绍一下redis..废话少说下面开始正题. 1.redis是什么? Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. 对的redi