我有时需要花几秒钟从redis获取密钥。 Redis信息显示used_memory比used_memory_rss大2倍,OS开始使用swap。 清理无用数据后,used_memory低于used_memory_rss,一切正常。
令我困惑的是:如果任何查询成本为10秒并阻止其他查询到redis会给应用程序的其他部分带来严重问题,但对应用程序来说似乎很好。 我在慢速日志中找不到任何长时间的查询,所以我检查redis SLOWLOG命令并说它
执行时间不包括I / O操作,如与客户端交谈,发送回复等等,而只是实际执行命令所需的时间(这是命令执行的唯一阶段,其中线程被阻止,同时无法提供其他请求
所以如果这意味着查询的执行正常并且没有阻止任何其他查询?当内存不足并导致这个长时间的查询时,查询会发生什么?这些查询的哪一部分需要很长时间才能实现命令"时间成本不足以进入慢速日志?
谢谢!
答案 0 :(得分:0)
当内存不足时,Redis肯定会因为开始交换而变慢。你可以使用INFO来报告Redis正在使用的内存量,即使你可以使用maxmemory选项设置内存使用的最大限制。配置文件对Redis可以使用的内存设置限制。如果达到此限制,Redis将开始回复错误以写入命令(但将继续接受只读命令),