2

我们在生产环境中使用 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"}

不知道这里出了什么问题。

提前致谢。

苏尼尔

4

1 回答 1

3

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

另一种选择是使用仅附加文件,它更轻量但需要某种维护——您需要BGREWRITEAOF每隔一段时间运行一次,这样您的日志就不会变得太大。Redis 配置文件中有更多关于此的内容。

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

于 2010-08-26T03:41:45.587 回答