redis日志

slowlog-log-slower-than:指定执行时间超过多少微秒(1秒等于1000000微秒) 的命令请求会被记录到日志上

slowlog-max-len:指定服务器最多保存多少条慢查询操作

设置slowlog有两种方式:

  • 方式一:通过配置redis.conf文件进行配置
# 执行时间大于多少微秒(microsecond,1秒 = 1,000,000 微秒)的查询进行记录。
slowlog-log-lower-than 1000 #最多能保存多少条日志
slowlog-max-len 200
  • 方式二:通过CONFIG命令进行配置
# 配置查询时间超过1毫秒的, 第一个参数单位是微秒
> CONFIG SET slowlog-log-slower-than 1000 # 保存 100 条慢查记录
> config set slowlog-max-len 100
127.0.0.1:6379 > slowlog get

以windows为例查看记录如下

为了方便解说,我设置超时时间为0毫秒,日志记录为1条

那么记录的中的1)2)3)4)分别表示什么呢?

1)表示日志唯一标识符uid

2)命令执行时系统的时间戳

3)命令执行的时长,以微妙来计算

4)命令和命令的参数

做日志查询的时候,可以通过3)来查看是具体的命令运行时间(注意:再强调一次,时间的单位是微妙,但对于一个插入操作来说,10000微妙,也就是10毫秒即0.01秒已经可以算是慢操作了)

需要去查看redis生成的持久型日志,这需要额外去配置一些内容,其中涉及到了集群和分布式,

redis 管道 pileline

1、未使用pipeline执行N条命令

2、使用了pipeline执行N条命令

3、两者性能对比

三、原生批命令(mset, mget)与Pipeline对比

1、原生批命令是原子性,pipeline是非原子性

(原子性概念:一个事务是一个不可分割的最小工作单位,要么都成功要么都失败。原子操作是指你的一个业务逻辑必须是不可拆分的. 处理一件事情要么都成功,要么都失败,原子不可拆分)

2、原生批命令一命令多个key, 但pipeline支持多命令(存在事务),非原子性

3、原生批命令是服务端实现,而pipeline需要服务端与客户端共同完成

4、使用pipeline组装的命令个数不能太多,不然数据量过大,增加客户端的等待时间,还可能造成网络阻塞,可以将大量命令的拆分多个小的pipeline命令完成

5、redis提供了mset、mget方法,但没有提供mdel方法,如果想实现,可以借助pipeline实现。

贴上代码

<?php
$stime=microtime(true); //获取程序开始执行的时间
echo '开始内存:'.memory_get_usage(), ''; echo PHP_EOL;
$redis = new \Redis(); $redis->connect('192.168.29.108',6379);
$redis->auth("root"); //$pipe=$redis->multi($redis::PIPELINE);//将多个操作当成一个事务执行
$pipe=$redis->pipeline();//(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证 for($i= 0; $i<10000 ; $i++) { $pipe->set("key::$i",str_pad($i,4,'0',0)); $pipe->get("key::$i"); } $replies=$pipe->exec(); $etime=microtime(true);//获取程序执行结束的时间 $total=($etime-$stime); //计算差值 echo "[页面执行时间:{$total} ]s"; echo PHP_EOL;
echo '运行后内存:'.memory_get_usage(), ''; echo PHP_EOL;

最新文章

  1. Struts框架2ActionError类 内部资料 请勿转载 谢谢合作
  2. 【php学习】PHP 入门经典第二章笔记
  3. 十天冲刺---Day5
  4. javamail实践
  5. java web 学习 --第六天(Java三级考试)
  6. [Android Pro] Android以root起一个process[shell脚本的方法]
  7. apache ab下载测试
  8. oracle 查询数据库表空间大小和剩余空间
  9. codeforces A. Vasily the Bear and Triangle 解题报告
  10. 使用pgbench测试PostgreSQL
  11. UVa 674 Coin Change【记忆化搜索】
  12. Objective-C面向对象的编程
  13. Java计算机网络
  14. 大文件读取方法(C#)
  15. C#入门经典(2-重置窗体布局,界面介绍,错误列表)
  16. [学习OpenCV攻略][003[初试牛刀——显示图片]
  17. Revit 插件产品架构梳理
  18. [转]Docker容器可视化监控中心搭建
  19. pandas(DataFrame)
  20. SpringMVC(2):Spring MVC入门

热门文章

  1. 创建vue项目时所发送错误
  2. web自动化测试—Firefox安装与配置
  3. Crypto入门 (九) easy_RSA
  4. 删除oracle
  5. 编译GO报错:cgo: C compiler
  6. Unity递归查找子物体
  7. button 样式 触发器
  8. python数据结构转字符串_python2中字符不显示问题_python2_递归
  9. Python实现方便的读入数字
  10. Android进度表示