memcache & redis
连接方式
- memcache:tcp & udp
- redis: tcp & udp
事件模型
- memcache: libevent 底层epoll
- memcached是多线程的,使用master-worker的方式,主线程监听端口,建立连接,然后顺序分配给各个工作线程。每一个从线程都有一个event loop,它们服务不同的客户端
- redis:epoll 也支持select和poll
- redis是单线程的服务器(redis也是多线程的,只不过除了主线程以外,其他线程没有event loop,只是会进行一些后台存储工作)
- redis的事件模型很简单,只有一个event loop,是简单的reactor实现
内存分配
- memcache:memcached是有自己得内存池的,即预先分配一大块内存,然后接下来分配内存就从内存池中分配,这样可以减少内存分配的次数,提高效率,所以内存申请和释放的管理就简单很多,直接malloc和free即可
- redis: redis没有自己得内存池,而是直接使用时分配,即什么时候需要什么时候分配,内存管理的事交给内核,自己只负责取和释放
浙公网安备 33010602011771号