memcached的epoll是ET方式触发,也就是同一个事件,只有在状态发生转变的时候才会通知应用层。而memcached的线程架构是主线程负责监听所有的连接请求,然后轮询分配给子线程。而主线程在accept的时候,并没有使用类似while循环之类的方式。
问:这样岂不是在多个请求并发访问memcached的时候,主线程可能只响应了就绪队列里的第一个或前几个请求,而造成其余的请求没有被响应到?还是说memcached其实有做这方面的考虑,是我看代码不仔细呢?求大神帮忙!
需求背景:网站有一个图片放映功能,页面加载时需从数据库中查询管理员所提交放映的图片信息,图片放映
区共有9张图片,对应在数据库表中有9条记录。每次用户访问网站时,需查询数据库,并显示图片。当承受大
规模用户同时访问时,数据库的压力可想而之。
为了降低数据库压力,提高查询速度,我采用了Memcache来将图片记录信息缓存到Memcache服务器
上。这样就将数据库的查询压力分散到了各缓存服务器,提高了网站访问的整体效率。