我对Redis很新,所以如果这个问题太基础,我会事先道歉。
我在我的应用程序中的2个位置使用Redis。
这是1天后的慢速日志:
信息显示我有很多连接
redis_version:2.4.10
redis_git_sha1:00000000
redis_git_dirty:0
arch_bits:64
multiplexing_api:epoll
gcc_version:4.4.6
process_id:1769
uptime_in_seconds:190693
uptime_in_days:2
lru_clock:1725649
used_cpu_sys:386.48
used_cpu_user:200.63
used_cpu_sys_children:3.19
used_cpu_user_children:4.76
connected_clients:12
connected_slaves:0
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
used_memory:6551904
used_memory_human:6.25M
used_memory_rss:22675456
used_memory_peak:7991472
used_memory_peak_human:7.62M
mem_fragmentation_ratio:3.46
mem_allocator:jemalloc-2.2.5
loading:0
aof_enabled:0
changes_since_last_save:62
bgsave_in_progress:0
last_save_time:1464291307
bgrewriteaof_in_progress:0
total_connections_received:222528
total_commands_processed:2635087
expired_keys:29
evicted_keys:0
keyspace_hits:12056
keyspace_misses:1465
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:1309
vm_enabled:0
role:master
db0:keys=64,expires=2
我检查了代码,但我没有看到为什么我有这么多联系的原因。大多数用法是从单个文件完成的,该文件仅实例化一次redis连接。这个文件每天可能被调用几千次。
我想要理解我是否应该担心这一点,如果有什么我应该在实施中做不同的事情。
我害怕在应用程序的更多部分中进一步使用redis,以防我损害已经工作的那些功能的性能。
任何建议我应该检查什么以进一步分析这将是非常欢迎
答案 0 :(得分:3)
在回答之前,很难澄清一些事情。
您的问题的答案:
不,不会。它与您的方案中的负载无关。
延迟取决于系统中的负载。关键的是在负载期间发生的那些。你无法控制那里。
单独的实时连接数量。每个同时执行的10个实时连接和100个实时连接之间存在差异。
解决方案: HMSET命令是这里的瓶颈,因为它们是阻塞的。不是将HMSET用于大于10K的元素,而是将它们分成100或数千的倍数。尝试使用不同的数字并找到最佳数字并修复该数字。同时升级到更高版本的redis,这将比以前更好。
p.s:Info命令在你的屏幕截图中需要1750秒,这似乎很不寻常。