缓存 – 为什么facebook在memcached中使用TCP进行SET和UDP进行GET

我的问题是关于memcached. Facebook使用memcached作为结构化数据的缓存,以减少用户的延迟.他们在
linux上使用UDP优化了memcached的性能.
http://www.facebook.com/note.php?note_id=39391378919

但有趣的是,他们仍然使用TCP进行集合操作,但使用UDP进行get操作.

他们为什么会这样做?我的意思是为什么不使用UDP进行设置操作呢? UDP比TCP更好,因为需要在操作系统中维护的状态减少.

谢谢,

最佳答案 每个UDP数据报都包含一个简单的帧头,后面跟着数据

与上述TCP协议相同的格式.在当前

实现时,请求必须包含在单个UDP数据报中,但是

回复可能跨越几个数据报. (唯一的常见请求

跨多个数据报是巨大的多键获取请求和设置

请求,这两个请求更适合TCP传输以确保可靠性

原因无论如何.)

https://github.com/memcached/memcached/blob/master/doc/protocol.txt

点赞