redis-03-性能优化

一、性能分析

1、redis慢查询分析

在这里插入图片描述

2、慢查询阈值设置(默认10ms)

1),动态设置6379:> config set slowlog-log-slower-than 10000 //10毫秒
使用config set完后,若想将配置持久化保存到redis.conf,要执行config rewrite
2),redis.conf修改:找到slowlog-log-slower-than 10000 ,修改保存即可
注意:slowlog-log-slower-than =0记录所有命令 -1命令都不记录

3、慢查询记录原理

慢查询记录也是存在队列里的,slow-max-len 存放的记录最大条数,
比如设置的slow-max-len=10,当有第11条慢查询命令插入时,队列的第一条命令就会出列,第11条入列到慢查询队列中, 可以config set动态设置,也可以修改redis.conf完成配置

4、获取慢查询记录命令

获取队列里慢查询的命令:slowlog get
获取慢查询列表当前的长度:slowlog len
1),对慢查询列表清理(重置):slowlog reset //再查slowlog len 此时返回0 清空;
2),对于线上slow-max-len配置的建议:线上可加大slow-max-len的值,记录慢查询存长命令时redis会做截断,不会占用大量内存,线上可设置1000以上
3),对于线上slowlog-log-slower-than配置的建议:默认为10毫秒,根据redis并发量来调整,对于高并发比建议为1毫秒
4),慢查询是先进先出的队列,访问日志记录出列丢失,需定期执行slowlog get,将结果存储到其它设备中(如mysql)

5、redis性能压测

  • 1、redis-benchmark -h 192.168.42.111 -p 6379 -c 100 -n 10000
    100个并发连接,10000个请求,检测服务器性能

  • 2、redis-benchmark -h 192.168.42.111 -p 6379 -q -d 100
    测试存取大小为100字节的数据包的性能

  • 3、redis-benchmark -h 192.168.42.111 -p 6379 -t set,get -n 100000 -q
    只测试 set,lpush操作的性能

  • 4、redis-benchmark -h 192.168.42.111 -p 6379 -n 100000 -q script load
    “redis.call(‘set’,‘foo’,‘bar’)”

    只测试某些数值存取的性能

6、redis运行原理流程

发送命令-〉命令排队-〉命令执行-〉返回结果

在这里插入图片描述

7、redis单个指令批量操作误区和PIPELINE操作流程

单个指令批量操作流程在这里插入图片描述
PIPELINE操作流程
在这里插入图片描述
使用pipeline

public static void delNoPipe(String...keys){
   Jedis jedis = new Jedis(RedisTools.ip,RedisTools.port);
     Pipeline pipelined = jedis.pipelined();
     for(String key:keys){
         pipelined.del(key);//redis?
     }
     pipelined.sync();//
     jedis.close();
 }

pipeline 执行的一组件命令中,如果有一个命令执行失败,不会影响其它命令执行结果

二、事物: 弱事物

1、multi:开始事物、exec:结束事物

事物中执行一组指令,其中有一个指令执行失败,指令类型错误,语法正确,不影响其它指令执行,且执行成功的数据不会回滚。

在这里插入图片描述

2、discard:取消事务,放弃执行事务块内的所有命令

在这里插入图片描述

3、事物中一组指令,出现语法错误的指令,那么这组指令执行失败

在这里插入图片描述

4、watch命令:使用watch后, multi失效,事务失效

2个客户端监听同一个Key
客户端A:
在这里插入图片描述
客户端B:
在这里插入图片描述
客户端A:
在这里插入图片描述
在这里插入图片描述

四、redis发布与订阅

在这里插入图片描述
发布:
在这里插入图片描述
订阅:
在这里插入图片描述

五、Resp 协议

Redis 服务器与客户端通过 RESP(REdis Serialization Protocol)协议通信。
主要以下特点:容易实现,解析快,人类可读.
RESP 底层采用的是 TCP 的连接方式,通过 tcp 进行数据传输,然后根据解析规则解析相 应信息,完成交互。

Resp 协议的结构.
*3 ----->表示有3组数据
$3 ------->下面跟的指令长度为3
set -------->所根指令
$4 ------->下面跟的指令长度为5
name
$5 ------->下面跟的指令长度为5
clock
RESP协议包含:数据组数,指令长度,指令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值