【问题标题】:Redis (1.2.6) : Slow queriesRedis (1.2.6):慢查询
【发布时间】:2011-03-25 04:45:57
【问题描述】:

我们在生产环境中使用 Redis 1.2.6。 redis中有161804个key。机器有 2GB 内存。

问题:

对 Redis 的选择查询平均需要 0.02 秒。但有时它们需要 1.5-2.0 秒,我认为每当 redis 将修改后的密钥保存在磁盘上时。

重启redis前后我注意到的一件奇怪的事情是:

在重新启动之前,“changes_since_last_save”变化太快,达到 3000+(5 分钟内)。但是重启后“changes_since_last_save”仍然低于20左右。

重启前的Redis统计数据:

{:bgrewriteaof_in_progress=>"0", :arch_bits=>"64", :used_memory=>"53288487", :total_connections_received=>"586171", :multiplexing_api=>"epoll", :used_memory_human=>"50.82M", :total_commands_processed=>"54714152", :uptime_in_seconds=>"1629606", :changes_since_last_save=>"3142", :role=>"master", :uptime_in_days=>"18", :bgsave_in_progress=>"0", :db0=>"keys=161863,expires=10614", :connected_clients=>"13", :last_save_time=>"1280912841", :redis_version=>"1.2.6", :connected_slaves=>"1"}

重启后的Redis统计:

{:used_memory_human=>"49.92M", :total_commands_processed=>"6012", :uptime_in_seconds=>"1872", :changes_since_last_save=>"2", :role=>"master", :uptime_in_days=>"0", :bgsave_in_progress=>"0", :db0=>"keys=161823,expires=10464", :connected_clients=>"13", :last_save_time=>"1280917477", :redis_version=>"1.2.6", :connected_slaves=>"1", :bgrewriteaof_in_progress=>"0", :arch_bits=>"64", :used_memory=>"52341658", :total_connections_received=>"252", :multiplexing_api=>"epoll"}

不确定这里出了什么问题。

提前致谢。

苏尼尔

【问题讨论】:

  • 您没有提供任何信息,您使用了哪些命令或有关您的配置(复制?)的任何信息。但是你应该试试 2.0 RC 版本,它比 1.2 分支更快更稳定

标签: redis


【解决方案1】:

默认情况下,Redis 配置为根据时间跨度内更改的键数量不时将所有数据转储到磁盘(请参阅default config)。

另一个选择是使用append-only file,它更轻量级但需要某种维护——您需要每隔一段时间运行一次BGREWRITEAOF,这样您的日志就不会变得太大。 Redis config file 上还有更多关于此的内容。

正如 Tobias 所说,您应该尽快切换到 2.0,因为它更快,而且在许多情况下,使用的内存比 1.2.6 少。

【讨论】:

    猜你喜欢
    • 2020-02-27
    • 2011-07-20
    • 1970-01-01
    • 2022-01-04
    • 2016-08-28
    • 2012-07-02
    • 2010-11-19
    • 1970-01-01
    • 2020-10-30
    相关资源
    最近更新 更多