Skip to content

简单的memcached服务器

lichuang edited this page Oct 10, 2013 · 1 revision

这一节有一个比之前的Echo服务器更复杂一些的例子,它是一个简单的memcached服务器,支持memcached协议中的set/get命令.该服务器的完整代码可以在examples/qcached中找到.

三种微进程

Echo服务器中只有两种微进程,一个是负责监听客户端连接的进程,在接收到新的客户端请求之后,它将创建一个子进程负责处理客户端的请求.

memcached服务器比Echo服务器复杂的地方在于,它还涉及到数据的存储.因此,在memcached服务器中还有第三种进程,就是存储进程,处理客户端请求的进程在set/get数据时将通过消息的形式与该进程通信,进行数据的存储和查询--同样的,这个过程也是"同步化"的.

微进程间通信的API

来看看与进程消息收发相关的两个API:qlnode_send,qlnode_recv

qlnode_send的参数有两个,一个是进程id,这个进程id是在调用qlnode_spawn函数创建微进程之后的返回值;另一个是一个表,里面存放的是传递给另一个进程的参数. qlnode_recv则没有输出参数,它的返回值则是一个表,里面存放的别的进程向该进程传递的数据.

这两个函数的使用都很简单,可以结合代码来阅读理解,就不在这里多做阐述了.

Clone this wiki locally