Redis学习(4)-慢查询分析与RESP协议
慢查询
Redis慢查询分析
与MySQL一样:当执行时间超过极大值时,会将发生时间、耗时、 命令记录;
redis命令生命周期:发送 排队 执行 返回,慢查询只统计第3个执行步骤的时间
Redis如何设置
动态设置6379:> config set slowlog-log-slower-than 10000 //10毫秒 使用config set完后,若想将配置持久化保存到redis.conf,要执行config rewrite ;前提是你根据redis.conf 执行
redis.conf修改:找到slowlog-log-slower-than 10000 ,修改保存即可 注意:slowlog-log-slower-than =0记录所有命令 -1命令都不记录
Redis慢查询原理
慢查询记录也是存在队列里的,slow-max-len 存放的记录最大条数,比如设置的slow-max-len=10,当有第11条慢查询命令插入时,队列的第一条命令就会出列,第11条入列到慢查询队列中, 可以config set动态设置,也可以修改redis.conf
|
|
Redis性能测试(在外部请求)
- redis-benchmark -h 192.168.42.111 -p 6379 -c 100 -n 10000 100个并发连接,10000个请求,检测服务器性能
- redis-benchmark -h 192.168.42.111 -p 6379 -q -d 100 测试存取大小为100字节的数据包的性能
- redis-benchmark -h 192.168.42.111 -p 6379 -t set,get -n 100000 -q 只测试 set,lpush操作的性能
- redis-benchmark -h 192.168.42.111 -p 6379 -n 100000 -q script load “redis.call(‘set’,‘foo’,‘bar’)” 只测试某些数值存取的性能
RESP协议
Redis服务器与客户端通过RESP(Redis Protocol specification)协议通信 (aof 文件就是通过RESP存储的)
- Simple to implement.
- Fast to parse.
- Human readable.
好实现、解析快、易于理解
|
|
应用
我们可以通过这个在客户端产生成这样的数据通过socket连接redis 发送给他(jedis客户端的原理就是这样)
我们也可以通过把数据库数据查询出来格式化成resp的格式请求redis(就做到了备份数据库)
|
|
PIPELINE操作流程
大多数情况下,我们都会通过请求-相应机制去操作redis。只用这种模式的一般的步骤是,先获得jedis实例,然后通过jedis的get/put方法与redis交互。由于redis是单线程的,下一次请求必须等待上一次请求执行完成后才能继续执行。然而使用Pipeline模式,客户端可以一次性的发送多个命令,无需等待服务端返回。这样就大大的减少了网络往返时间,提高了系统性能。但是要用好、用对还是得深度学习
流程
使用PIPELINE可以解决网络开销的问题
原理也非常简单,流程如下, 将多个指令打包后,一次性提交到Redis, 网络通信只有一次