Memcached用了libevent,但是Redis没有用libevent。Redis的代码还没有libevent的三分之一。

libevent有下面几大部分组成:

* 事件管理包括各种IO(socket)、定时器、信号等事件,也是libevent应用最广的模块;

* 缓存管理是指evbuffer功能;

* DNS是libevent提供的一个异步DNS查询功能;

* HTTP是libevent的一个轻量级http实现,包括服务器和客户端

evbuffer和bufferevent的关系:

一言以蔽之,bufferevent使用了evbuffer,并且使用了两份,读入buffer和写出buffer。另外bufferevent里面还加了event。

说明bufferevent是一个带有缓冲区的I/O。也就是说,这个bufferevent知识多了两个evbuffer,然后对event_set函数和event_add函数进行再次封装!

http://blog.csdn.net/chenycbbc0101/article/details/52091085

通过我的这篇文章:

http://www.cnblogs.com/charlesblc/p/5456128.html

可以看出bufferevent主要函数是:

bufferevent *bev = bufferevent_socket_new(base, fd, BEV_OPT_CLOSE_ON_FREE);

    bufferevent_setcb(bev, socket_read_cb, NULL, socket_event_cb, NULL);
bufferevent_enable(bev, EV_READ | EV_PERSIST);

然后读和写是这样的:

size_t len = bufferevent_read(bev, msg, sizeof(msg) - 1);

bufferevent_write(bev, reply, strlen(reply));

缓冲模块主要用于缓冲从网络接收到的数据,以及
用户提交的数据(用于发送)。很多时候,我们还需要将网络模块层(非TCP层)的这些缓冲数据拷贝到用户层,而这些内存拷贝
都会消耗时间。

libevent总结学习的更多相关文章

  1. Libevent库学习笔记

    Libevent是一个事件触发的网络库,适用于windows.linux.bsd等多种平台,Libevent在底层select.pool.kqueue和epoll等机制基础上,封装出一致的事件接口.可 ...

  2. 【系统】libevent库学习

    Libevent库 是一个用C语言开发的.轻量级的开源高性能事件通知库,主要功能特点如下: 事件驱动(event-driven),高性能; 注册事件分优先级: 支持 I/O,定时器和信号等事件信息: ...

  3. libevent 简单学习

    //NetworkManager.h #ifndef _NET_WORK_MANAGER_ #define _NET_WORK_MANAGER_ #include "event2/util. ...

  4. linux 下第一个Libevent代码学习

    #include <event.h> struct event ev; struct timeval tv; void time_cb(int fd, short event, void* ...

  5. libevent之学习文档

    1.官方文档 2.中文版 3.gitbook

  6. R1 学习记录

    libevent框架学习特点: 1.可移植行,跨平台的 2.速度快,libevent会用各平台最快的非阻塞IO函数 3.扩展性 4.方便性构成: 1.evutil: 抽象出各平台network的函数 ...

  7. vs2013 调试libevent 源码

    自己内功的提升,无非是向前辈学习和修炼自身,对于编码也是如此,学习优秀的库只有从 源代码学起,才能深刻理解库实现的来龙去脉,加深自己的理解,提升自己的功力. 今天就介绍一下vs2013 下面调试lib ...

  8. PHP中的Libevent学习

    wangbin@2012,1,3 目录 Libevent在php中的应用学习 1.      Libevent介绍 2.      为什么要学习libevent 3.      Php libeven ...

  9. libevent学习之二:Windows7(Win7)下编译libevent

    Linux下编译参考源码中的README文件即可,这里主要记录Windows下的编译. 一.准备工作 去官网下载最新的稳定发布版本libevent-2.0.22-stable 官网地址:http:// ...

随机推荐

  1. A计划

    A计划 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submissio ...

  2. why is agreement hard in a distributed system?

    same question as: why is PAXOS necessary? 1, what if >1 nodes become leaders simultaneously? that ...

  3. updating the chroot

    Ubuntu may stop working after a Chrome OS update. If that's the case, update all the installed targe ...

  4. GsonFormat 报错

    GsonFormat原来也有bug 我是用GsonFormat来生成java bean的,但是运行起来居然报 Caused by: java.lang.NumberFormatException: E ...

  5. hr定位

    css里写 <style> hr{ position:relative; top: 500px; } </style> 重要!!! hr不能绝对定位, 只能相对定位,所以 hr ...

  6. hibernate —— 树状存储

    package com.pt.treeStrut; import java.util.Set; import javax.persistence.CascadeType; import javax.p ...

  7. VB 对象变量或with块变量未设置

    先看错误代码,以下代码提示 对象变量或with块变量未设置: Dim obj As Object obj = WebBrowser1.Document.getElementById("swi ...

  8. MyBatis-配置缓存

    <cache type="org.mybatis.caches.ehcache.LoggingEhcache"> <property name="tim ...

  9. Arch: Configurations

    the original purpose is to show the steps needed to setup i3 in vbox.. easy. alright, it is a bit mi ...

  10. Co-Debugging JNI with Android Studio and Visual Studio

    Tutorials > Android > Integration with other tools > Co-Debugging JNI with Android Studio a ...