试图掌握Redis的一些基础知识我遇到了一篇有趣的博客文章.
作者说:
Redis是带有epoll/kqueue的单线程,并且在I/O并发方面无限缩放.
我肯定误解了整个线程,因为我发现这个说法令人费解.如果程序是单线程的,它如何同时执行任何操作?如果服务器是单线程的话,为什么Redis操作是原子的呢?
有人可以就这个问题说清楚吗?
作为我之前的问题的后续跟进,Redis如何实现高吞吐量和高性能?
我有以下问题
我已经看到Redis在行动,并对其能力印象深刻.想要更多地了解这种魔力.我已经看到,当Redis盒和查询盒更接近时,即使在高QPS(1kps)时,响应时间也是5ms.当它们在地理上更远时(数据中心与不同的数据中心相同),响应时间可达50毫秒.这只是网络延迟还是Redis必须保持一些开销,直到整个数据被刷新.
连接数可以影响Redis吞吐量吗?想象一下,Redis能够以500微秒的速度响应每个请求.并且假设1000个不同的客户端连接在给定实例上有1000个不同的请求.最后一个请求是否需要500muSec*1000 = 500ms?
响应大小可以在这里产生影响吗?想象一下,每个响应的大小为100 KB,Redis上的TCP连接必须等到最后一个数据包交付,如果网络连接速度慢,它会减慢Redis吗?