我们在生产环境中使用Redis 1.2.6。 redis中有161804个按键。机器有2GB RAM。
问题:
对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"}
不确定这里出了什么问题。
提前致谢。
苏尼
答案 0 :(得分:3)
默认情况下,Redis配置为不时地将所有数据转储到磁盘,具体取决于在一个时间跨度内更改的密钥数量(请参阅default config)。
另一种选择是使用append-only file,它更轻量级但需要某种维护 - 你需要每隔一段时间运行一次BGREWRITEAOF
,这样你的日志就不会太大。关于此问题,Redis config file还有更多内容。
正如Tobias所说,你应该尽快切换到2.0,因为它更快,并且在许多情况下,使用的内存少于1.2.6。