Redis,在使用NodeJS写作时阅读

时间:2013-11-13 16:16:13

标签: performance node.js redis

我有一个NodeJS工作者,每小时更新一次我的Redis数据库。该工作分批查询远程数据库,以便串行发送请求组,以便最大限度地提高性能(在远程数据库上)。

当我将回复写回我的Redis排序集时,我发现 - 偶尔 - 从Redis数据库读取速度非常慢,并且表现得好像发生了阻塞

我尽力确定为什么这种情况偶尔会发生,但我无法可靠地复制性能,也无法以任何系统的方式复制性能。

有什么理由说明性能会降低这么多吗?我错过了什么吗?

Redis on Window:

redis_version:2.4.6
redis_git_sha1:26cdd13a
redis_git_dirty:0
arch_bits:64
multiplexing_api:winsock2
gcc_version:4.6.1
process_id:7512
uptime_in_seconds:202034
uptime_in_days:2
lru_clock:23886
used_cpu_sys:290.65
used_cpu_user:2261.94
used_cpu_sys_children:0.00
used_cpu_user_children:0.00
connected_clients:3
connected_slaves:0
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
used_memory:780833728
used_memory_human:744.66M
used_memory_rss:780833728
used_memory_peak:780849896
used_memory_peak_human:744.68M
mem_fragmentation_ratio:1.00
mem_allocator:libc
loading:0
aof_enabled:0
changes_since_last_save:-26
bgsave_in_progress:0
last_save_time:1384359002
bgrewriteaof_in_progress:0
total_connections_received:6
total_commands_processed:12908729
expired_keys:0
evicted_keys:0
keyspace_hits:12907834
keyspace_misses:888
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0
vm_enabled:0
role:master
db0:keys=698,expires=0

1 个答案:

答案 0 :(得分:0)

似乎zenbeni的评论非常准确。如果保留默认模式,Redis将在一定数量的更新后转储到磁盘。但是,在我的用例中,实际上这几乎是随机的,因为关于每次外部查询后生成了多少更新,实际上没有任何系统性。

因此,当Redis转储到硬盘并且它还在内存中读取和写入数据库时​​,事情就会变慢。在这个阶段我不清楚这是否是我必须使用的Windows版Redis的一个特殊问题。我想,一旦我进入一个更成熟的产品版本,我将能够转移到基于Linux的操作系统。