`
youyu4
  • 浏览: 435594 次
社区版块
存档分类
最新评论

Redis慢查询日志

 
阅读更多

Redis慢查询日志

 

前提

一个线程将一个txt中140M的数据插入到redis的hashset中,同时我开另一个线程1秒钟一次的从string中获取数据,同时记录下获取时间,如果获取string的时间间隔太大,说明阻塞产生了。



 

读取string的线程被Hashset阻塞了6s之多,很恐怖,这个就属于典型的慢查询,它的慢果然阻塞了其他client

 

 

原因

redis是单线程的,如果是这么大数据量的插入,会阻塞其他命令的执行。所以在加入这种特殊业务的时候应该要注意。

同时,太大数据两的Hset有可能会导致超时的情况,这回比较致命。

 

 

解决方案

1. 将140M的数据拆分成14个10M的数据,好处有两个,第一减少Hset的时间,第二是尽量不阻塞其他线程操作数据,不过要改代码。

2. redis做主从,将读写分离开,这样读写的压力都比较均衡,但是大量的Hset还是会阻塞写数据库的其他命令。

3. 同时使用这两种方法

4. 专门开一个redis来存储缓存,将这块缓存数据分离开来,慢就慢,自己管理自己的数据,为了保证主redis不出问题。

 

 

慢查询日志

为了找到哪些查询被阻塞了,可以启动慢查询日志

 

定义

1. Slow log 是 Redis 用来记录查询执行时间的日志系统。

2. 查询执行时间指的是不包括像客户端响应(talking)、发送回复等 IO 操作,而单单是执行一个查询命令所耗费的时间。

3. 另外,slow log 保存在内存里面,读写速度非常快,因此你可以放心地使用它,不必担心因为开启 slow log 而损害 Redis 的速度。

 

设置slowlog

可以通过改写 redis.conf 文件或者用 CONFIG GET 和 CONFIG SET 命令对它们动态地进行修改。

 

slowlog-log-slower-than:对执行时间大于多少微秒(microsecond,1秒 = 1,000,000 微秒)的查询进行记录

 

slowlog-max-len:它决定 slow log 最多能保存多少条日志, slow log 本身是一个 FIFO 队列,当队列大小超过 slowlog-max-len 时,最旧的一条日志将被删除,而最新的一条日志加入到 slow log ,以此类推。

 

# The following time is expressed in microseconds, so 1000000 is equivalent
# to one second. Note that a negative number disables the slow log, while
# a value of zero forces the logging of every command.
slowlog-log-slower-than 0

# There is no limit to this length. Just be aware that it will consume memory.
# You can reclaim memory used by the slow log with SLOWLOG RESET.
slowlog-max-len 10

 

运行效果



 

  • 大小: 37.4 KB
  • 大小: 27.2 KB
分享到:
评论

相关推荐

    详解Redis的慢查询日志

    本文将深入解析Redis慢查询日志的各个方面,以提升对Redis数据库的理解。 首先,Redis的慢查询日志是通过记录执行时间超过预设阈值的命令来工作的。这个阈值由配置参数`slowlog-log-slower-than`定义,单位为微秒,...

    Redis分析慢查询操作的实例教程

    和mysql的慢SQL日志分析一样,redis也有类似的功能,来帮助定位一些慢查询操作。 Redis slowlog是Redis用来记录查询执行时间的日志系统。 查询执行时间指的是不包括像客户端响应(talking)、发送回复等IO操作,而单单...

    redis性能调优参考.pdf

    Redis的慢查询日志功能可以帮助开发者识别执行时间超过预设阈值的命令。预设阈值通过配置Showlog-log-slower-than设置,单位是微秒,默认值为10000。开发者可以动态地通过config set命令调整此值,例如将慢查询阈值...

    【中间件篇-Redis缓存数据库】Redis高级特性和应用(慢查询、Pipeline、事务、Lua)

    Redis的慢查询日志(Slow Log)是用于追踪执行时间过长的操作,有助于定位和优化性能瓶颈。当一个命令的执行时间超过预设阈值时,Redis会将其记录在慢查询日志中。你可以通过`slowlog get`命令查看日志,`slowlog ...

    redis面试题之客户端+慢查询+数据一致性.zip

    慢查询日志包含命令执行时间、命令详情、客户端信息等,帮助开发者分析并优化查询。例如,发现某些复杂操作或低效查询导致的延迟,可以通过调整数据结构、使用Lua脚本或者分批处理来提升速度。 最后,我们来关注...

    redis性能调优参考(15页).pdf

    本文档主要介绍Redis性能调优的相关知识点,涵盖数据库管理、慢查询日志、RDB持久化等方面的内容。 数据库管理 Redis提供了多个数据库管理命令,包括dbsize、select、flushdb/flushall等。这些命令可以用于管理...

    Redis硬核性能优化

    5. 定位慢查询:通过`slowlog`分析慢查询原因,并优化相应命令。 6. 日志分析:检查Redis日志,寻找异常信息或错误提示。 优化Redis性能不仅涉及配置调整,还涉及到运维监控、数据分析和代码优化等多个层面。在实施...

    redis3.0.5msi下载。官方太慢了

    描述中提到“官方太慢了”,这可能指的是从Redis官方网站下载的速度较慢,可能是由于网络问题或者服务器负载过高导致的。为了解决这个问题,提供了一个快速下载的链接,用户可以直接下载Redis 3.0.5的MSI安装包,...

    狂神说Redis笔记.pdf

    2. AOF(Append Only File):记录所有写操作的日志,Redis重启时重放日志恢复数据。AOF通常更安全,但可能会比RDB慢。 【Redis事务】 Redis支持简单的事务机制,允许用户在一个命令执行块中连续执行多个命令,并...

    redis-6.2.1-win64.7z

    AOF记录所有写操作的日志,当Redis重启时,会重新执行这些日志来恢复数据。 7. **Redis Sentinel**: Redis Sentinel是Redis高可用性的重要组件,监控主服务器状态,当主服务器故障时,Sentinel会自动将一个从...

    redis-4.0.0.tar.gz

    6. 慢日志改进:增加了慢日志的可配置性,如最小执行时间、最大日志条数等。 三、Redis的数据结构 Redis支持多种数据结构,包括字符串、哈希、列表、集合和有序集合。这些数据结构使得Redis能胜任各种场景,如缓存...

    RicdeTmp#TechNote#23、慢查询日志1

    23.1 慢查询日志的保存// 下一条日志的ID// 保存了所有日志的链表// slowlog链表保存了所有慢查询日志,每个节点都保存了一个slowlogEnt

    redis开发和运维

    书中的第3章聚焦于Redis的一些辅助功能,例如慢查询分析和Pipeline的使用,这些功能虽然细小但能显著提升Redis的性能。此外,作者还介绍了事务与Lua脚本结合的用法,以及HyperLogLog这种在大数据集统计中的高效数据...

    redis客户端,连接查看redis数据库

    - **慢查询日志**:记录执行时间过长的命令,帮助诊断性能问题。 8. **最佳实践** - **合理设置超时**:避免网络延迟导致的连接超时问题。 - **数据备份与恢复**:利用`SAVE`或`BGSAVE`命令定期备份,配合`...

    Redis-x64-3.0.504安装包

    同时,为了确保数据安全和性能,定期进行监控和维护也是非常重要的,例如检查内存使用情况、查看慢查询日志、定期进行备份等。 总之,Redis-x64-3.0.504安装包是部署Redis服务的基础,它的使用不仅可以提升应用的...

    redis5.0.14安装包,包含linux和win

    - **监控与性能**:使用`INFO`命令获取服务器状态信息,通过`MONITOR`命令实时查看操作,以及使用`slowlog`管理慢查询。 通过以上步骤,你可以在Linux和Windows系统上安装并运行Redis。记得定期更新到最新版本以...

    Redis 配置文件1

    6. **日志级别** (loglevel): Redis支持四种日志级别:debug、verbose、notice、warning,`loglevel verbose`表示详细日志,可以根据需求调整。 7. **日志文件** (logfile): 日志默认输出到标准输出。在守护进程中...

Global site tag (gtag.js) - Google Analytics