写在前面

  学习《redis入门指南》笔记,结合实践,只记录重要,明确,属于新知的相关内容。

安全

  1、可以使用bind参数绑定一个地址,使redis只接受这个地址的连接。

  2、使用requirepass参数,设置一个redis密码,使得每次客户端连接时都要发送密码,当执行复制时,如果主库设置了密码,需要在从库的配置文件通过masterauth参数设置主库的密码。

  3、对命令重命名,只需要在配置文件中配置参数rename-command,格式为:

1 rename-command 原命令名称 新命令名称

  若要禁用某个命令,可以重命名成空字符串 “” 。

通信协议

  4、redis支持两种协议,一种是比较直观的在telnet中输入的简单协议,另一种是二进制安全的统一请求协议,这两种协议只是命令的格式有区别,命令返回值的格式是一样的。

  5、简单协议适合在telnet中与redis通信,格式只是简单的将命令和各个参数以空格分开。

  6、返回值格式有5种:

    a、错误回复

      以 - 开头,加错误信息,以 \r\n 结尾

      -ERR unknown command 'haha'\r\n

    b、状态回复

  加状态信息,以\r\n结尾

  +OK\r\n

c、整数回复

  以+开头,加数字,以\r\n结尾

  +3\r\n

d、字符串回复

  以$开头,加字符串长度并以\r\n分隔,加字符串内容,以\r\n结尾

  $3\r\nPONG\r\n

  如果返回值为nil,则以$-1和空字符串区别

e、多行字符串回复

  以*开头,加字符串组数并以\r\n分隔,加字符串回复的具体内容

  *3\r\n$1\r\n3\r\n$1\r\n2\r\n$3\r\n1\r\n

7、统一请求协议的格式和多行字符串回复的格式类似,如:

  SET foo bar

  *3\r\n$3\r\nSET\r\n$3\r\nfoo\r\n1\r\n$3\r\nbar\r\n

  redis主从复制和AOF都使用了统一请求协议
 

管理工具

  8、使用redis-cli查看耗时日志

    SLOWLOG GET

    通过配置文件参数slow-log-slower-than设置耗时命令的限制,单位为微秒,设置为负数则代表关闭慢日志;slow-max-len限制记录条数,耗时命令日志记录在内存中。每条耗时命令日志包含4个组成部分:日志唯一id、执行的UNIX时间、执行耗时(微秒)、命令及其参数。

  9、命令监控MONTITOR,执行这个命令后,redis会将所有执行的命令都会在redis-cli打印出来,这个命令会降低一半的负载能力,仅用于调试。(Instagram团队使用python开发的基于monitor命令的工具redis-faina,可以分析出最常用的命令,访问最频繁的键等信息)

  10、工具Rdbtools是一个redis的快照文件解析器,可以将快照数据导出JSON数据文件,分析redis种每个键的占用情况。也可以将每个键的存储情况导出CSV文件便于分析。示例如下:

1 rdb --command json /path/redisdump.rdb > rdboutput.json
2 rdb -c memory /path/redisdump.rdb > rdboutput.cvs

redis命令属性

11、REDIS_CMD_WRITE

  表示会修改数据库数据,只读从库不可执行这类命令,另外lua脚本中在执行了拥有REDIS_CMD_RANDOM属性的命令后,不可执行拥有此属性的命令。

12、REDIS_CMD_DENYOOM

  表示可能增加redis占用的存储空间,拥有此属性的命令必然拥REDIS_CMD_WRITE属性,反之不然。当占用空间达到配置文件maxmemory参数指定的值且根据maxmemory-policy参数无法释放空间时,会拒绝执行此类命令。

13、REDIS_CMD_NOSCRIPT

  拥有此属性的命令无法在脚本中执行

14、REDIS_CMD_RANDOM

  脚本中在执行了拥有此属性的命令后,不可执行拥有REDIS_CMD_WRITE属性的命令。

15、REDIS_CMD_SORT_FOR_SCRIPT

  拥有此属性的命令会产生随机结果,在脚本中使用时,redis会对结果进行排序。

16、REDIS_CMD_LOADING

  redis在启动时(将数据从硬盘载入到内存)只会执行拥有此属性的命令。

redis入门指南(七)—— 安全、协议、管理工具及命令属性的更多相关文章

  1. redis入门指南(二)—— 数据操作相关命令

    写在前面 以下绝大部分内容取材于<redis入门指南>,部分结合个人知识,实践后得出. 只记录重要,明确,属于新知的相关内容,杜绝冗余和重复. 字符串 1.字符串类型是redis中最常见的 ...

  2. redis入门指南-第7章-管理

    7.1 持久化 1.RDB方式 2.AOF方式 Redis 持久化: 提供了多种不同级别的持久化方式:一种是RDB,另一种是AOF. RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(poi ...

  3. redis入门指南(六)—— 集群

    写在前面 学习<redis入门指南>笔记,结合实践,只记录重要,明确,属于新知的相关内容. 配置集群 1.配置集群,集群解决了单点故障以及单台机器内存上限的问题,使用集群时,只需要将配置文 ...

  4. 如何在 Istio 中支持 Dubbo、Thrift、Redis 以及任何七层协议?

    赵化冰,腾讯云高级工程师,Istio Member,ServiceMesher管理委员,Istio 项目贡献者, Aerika 项目创建者 ,热衷于开源.网络和云计算.目前主要从事服务网格的开源和研发 ...

  5. Redis入门指南之三(入门)

    本节主要介绍Redis的5种数据类型,同时使用Python API来操作Redis,其中python版本为3.5, redis版本为4.0.2. redis-py 的API的使用可以分类为: (1)连 ...

  6. Redis入门指南之一(简介)

    1. 简介 Redis是一个开源的.高性能的.基于键值对的缓存与存储系统,通过提供多种键值数据类型来适应不同的场景下的缓存与存储需求.同时Redis的诸多高级功能使其可以胜任消息队列.任务队列等不同的 ...

  7. Redis入门指南之二(安装及配置)

    本节主要内容 1. 前言2. redis安装3. 启动和停止Redis 1. 前言 安装Redis需要知道自己需要哪个版本,有针对性的安装,比如如果需要redis GEO这个地理集合的特性,那么red ...

  8. Redis核心解读:集群管理工具(Redis-sentinel)

    Redis核心解读:集群管理工具(Redis-sentinel) - Redis - TechTarget数据库 Redis核心解读:集群管理工具(Redis-sentinel)

  9. redis入门指南(三)—— 事务、过期时间、SORT命令、消息通知与管道

    写在前面 学习<redis入门指南>笔记,结合实践,只记录重要,明确,属于新知的相关内容. 事务 1.redis中的事务由一组命令的集合组成,要么都执行,要么都不执行,同时redis的事务 ...

随机推荐

  1. git 常规操作 windows版

    首先在本地建立好文件夹,然后初始化git仓库: git init 接下来在github上面克隆项目: git clone 这里写你的项目地址 然后就可以修改,删除,提交代码了  如果需要在新分支上面开 ...

  2. 第六篇scrum冲刺

    一. 站立式会议 1.会议照片 2. 项目进展 团队成员 昨日完成任务 今日计划任务 吴茂平  新消息提醒功能设计 实现开发新消息提醒功能 陈忠明 歌曲批量下载压缩包 歌手收藏功能 吴尚谦  设计下载 ...

  3. 力扣Leetcode 198. 打家劫舍

    打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警. 给定 ...

  4. 遍历查找集合或者数组中的某个元素的值 java代码 详解 Android开发

    import java.util.Scanner; public class Test21 { public static void main(String[] args) { //定义并初始化数组 ...

  5. 攻防世界——web新手练习区解题总结<3>(9-12题)

    第九题simple_php: 看题目说是php代码,那必定要用到php的知识,让我们先获取在线场景,得到如下网页 仔细看这个代码,意思大概是: 1.当a==0且a为真时输出flag1 2.当b为数字退 ...

  6. C# .NET容器的源码

    这里有List<T>的源码http://referencesource.microsoft.com/#mscorlib/system/collections/generic/list.cs

  7. Spine学习四 - 在动作上绑定回调事件

    Spine事件特性: SpineEvent(string startsWith = "", string dataField = "", bool includ ...

  8. logback1.11的一个bug:有线程持续不断写入log文件,log文件就不会按设定以日期切换。

    此Bug的解决方案请见:https://www.cnblogs.com/xiandedanteng/p/12205422.html logback是log4j的后继者,作者也是同一人,但其中的bug不 ...

  9. ubuntu nodejs+npm 前端环境部署

    起因 安装node.js / npm (npm:6.9.0 / nodejs:v10.21.0) 软连接的添加和删除 node.js 介绍 Node.js是一个Javascript运行环境(runti ...

  10. ubuntu 18.04下修改python3指向

    起因 ubuntu18.04下默认带的是python3.6,但是因为需求需要升级为python3.7 步骤 安装 sudo apt install python3.7 修改环境变量 修改默认的pyth ...