libevent

Ehcache Memcache Redis 三大缓存男高音

三世轮回 提交于 2019-12-10 23:00:42
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Ehcache 在java项目广泛的使用。它是一个开源的、设计于提高在数据从RDBMS中取出来的高花费、高延迟采取的一种缓存方案。正因为Ehcache具有健壮性 (基于java开发)、被认证(具有apache 2.0 license)、充满特色(稍后会详细介绍),所以被用于大型复杂分布式web application的各个节点中。 什么特色? 1. 够快 Ehcache的发行有一段时长了,经过几年的努力和不计其数的性能测试,Ehcache终被设计于large, high concurrency systems. 2. 够简单 开发者提供的接口非常简单明了,从Ehcache的搭建到运用运行仅仅需要的是你宝贵的几分钟。其实很多开发者都不知道自己用在用Ehcache,Ehcache被广泛的运用于其他的开源项目 比如:hibernate 3.够袖珍 关于这点的特性,官方给了一个很可爱的名字small foot print ,一般Ehcache的发布版本不会到2M,V 2.2.3 才 668KB。 4. 够轻量 核心程序仅仅依赖slf4j这一个包,没有之一! 5.好扩展 Ehcache提供了对大数据的内存和硬盘的存储,最近版本允许多实例、保存对象高灵活性、提供LRU、LFU、FIFO淘汰算法,基础属性支持热配置

Libevent: multithreading to handle HTTP keep-alive connections

主宰稳场 提交于 2019-12-10 11:09:17
问题 I am writing an HTTP reverse-proxy in C using Libevent and I would like to implement multithreading to make use of all available CPU cores. I had a look at this example: http://roncemer.com/software-development/multi-threaded-libevent-server-example/ In this example it appears that one thread is used for the full duration of a connection, but for HTTP 1.1 I don't think this will be the most effective solution as connections are kept alive by default after each request so that they can be

java memcached client

不羁的心 提交于 2019-12-10 02:17:46
Memcach 什么 是Memcache Memcache集群环境下缓存解决方案 Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。   Memcache是danga的一个项目,最早是LiveJournal 服务的,最初为了加速 LiveJournal 访问速度而开发的,后来被很多大型的网站采用。   Memcached是以守护程序方式运行于一个或多个服务器中,随时会接收客户端的连接和操作 为什么会有Memcache和memcached两种名称 其实Memcache是这个项目的名称,而memcached是它服务器端的主程序文件名,知道我的意思了吧。一个是项目名称,一个是主程序文件名,在网上看到了很多人不明白,于是混用了。 Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。Memcached由Danga Interactive开发,用于提升LiveJournal.com访问速度的。LJ每秒动态页面访问量几千次,用户700万。Memcached将数据库负载大幅度降低,更好的分配资源,更快速访问。 上网baidu了很多东西,几乎都差不多

php workerman 异步通讯框架

只愿长相守 提交于 2019-12-09 22:45:51
提示 workerman只是一个代码包,如果php环境满足要求,下载后即可使用,实际上没有安装过程。 workerman对php环境的要求是: 1、php>=5.3.3,可以运行命令 php -v 查看版本 2、Linux系统要求php安装了posix和pcntl扩展 可以在命令中运行curl -Ss http://www.workerman.net/check.php | php检测本地环境是否满足workerman。 全新系统参考以下安装教程 centos系统安装教程 1、命令行运行yum install php-cli php-process git gcc php-devel php-pear libevent-devel 2、命令行运行pecl install channel://pecl.php.net/libevent-0.1.0提示libevent installation [autodetect]: 时按回车 3、命令行运行echo extension=libevent.so > /etc/php.d/libevent.ini 4、命令行运行git clone https://github.com/walkor/workerman 5、参考 手册 写例子运行或者从主页下载 demo 运行 debian/ubuntu系统安装教程(如果不是root用户请用sudo

libevent笔记4:Filter_bufferevent过滤器

大憨熊 提交于 2019-12-08 00:21:24
Filter_bufferevent是一种基于bufferevent的过滤器,其本身也是一个bufferevent。能够对底层bufferevent输入缓存区中的数据进行操作(加/解密等)后再读取,同样也能在一定的操作后再将数据写入底层bufferevent的输出缓存区。需要注意的是,在创建Filter_bufferevent后,底层bufferevent的读写回调函数就不会再生效了,而缓存区的回调函数依旧有效。 Filter_bufferevent相关函数 struct bufferevent bufferevent_filter_new (struct bufferevent underlying, bufferevent_filter_cb input_filter, bufferevent_filter_cb output_filter, int options, void( free_context)(void ), void *ctx):创建一个过滤器,参数列表如下: struct bufferevent *underlying:需要过滤的底层bufferevent; bufferevent_filter_cb input_filter/bufferevent_filter_cb output_filter:对底层bufferevent的输入

Cent os 下 libevent,greenlet,gevent 的安装 和介绍 记录

那年仲夏 提交于 2019-12-07 17:35:29
1. libevent libevent是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用 select、epoll、kqueue等系统调用管理事件机制。著名分布式缓存软件memcached也是libevent based,而且libevent在使用上可以做到跨平台,而且根据libevent官方网站上公布的数据统计, 似乎也有着非凡的性能 主要组成:libevent包括事件管理、缓存管理、DNS、HTTP、缓存事件几大部分。事件管理包括各 种IO(socket)、定时器、信号等事件;缓存管理是指evbuffer功能;DNS是libevent提供的一个 异步DNS查询功能;HTTP是libevent的一个轻量级http实现,包括服务器和客户端 centOS下 安装: wget http://www.monkey.org/~provos/libevent-1.4.12-stable.tar.gz tar zxvf libevent-1.4.12-stable.tar.gz cd libevent-1.4.12-stable 生成配置 ./configure -prefix=/usrbevent 编译安装 make && make install 测试libevent是否安装成功:ls -al /usr/lib | grep libevent,

Libevent学习——Echo Server based on libevent

≯℡__Kan透↙ 提交于 2019-12-07 16:36:01
首先给出官方文档吧: http://libevent.org ,首页有个Programming with Libevent,里面是一节一节的介绍libevent,但是感觉信息量太大了,而且还是英文的-。-(当然,如果想好好用libevent,看看还是很有必要的),还有个Reference,大致就是对各个版本的libevent使用doxgen生成的文档,用来查函数原型和基本用法什么的。 下面假定已经学习过基本的socket编程(socket,bind,listen,accept,connect,recv,send,close),并且对异步/callback有基本认识。 基本的socket编程是阻塞/同步的,每个操作除非已经完成或者出错才会返回,这样对于每一个请求,要使用一个线程或者单独的进程去处理,系统资源没法支撑大量的请求(所谓c10k problem?),例如内存:默认情况下每个线程需要占用2~8M的栈空间。posix定义了可以使用异步的select系统调用,但是因为其采用了轮询的方式来判断某个fd是否变成active,效率不高[O(n)],连接数一多,也还是撑不住。于是各系统分别提出了基于异步/callback的系统调用,例如Linux的epoll,BSD的kqueue,Windows的IOCP。由于在内核层面做了支持,所以可以用O(1)的效率查找到active的fd。基本上

php安装libevent扩展

百般思念 提交于 2019-12-07 16:35:19
原本想尝试一下PHP编写高性能网络服务,需要安装libevent扩展,没想到让人很费了点脑袋 先下载libevent扩展: http://pecl.php.net/package/libevent/0.0.5 解压后,开始编译 1 2 3 $ cd libevent-0.0.5 $ / usr / local / php / bin / phpize $ . / configure --with-php-config = / usr / local / php / bin / php-config 结果马上报错了,错误显示为re2c版本过低。 re2c,PHP的词法解析器,官网:http://re2c.org/,下载最新的版本,编译完成。 继续编译刚才的PHP扩展 结果还是报错, 1 error: Cannot find libevent headers 直到这里,肯定是没找到libevent的目录, 本地查看是否安装了libevent, 终于在一个目录下找到了libevent-2.0.12-stable目录。 如果未安装,则先需安装libevent。 1 2 3 4 5 6 7 wget http: // cloud.github.com / downloads / libevent / libevent / libevent-2.0.20-stable.tar.gz tar

memcached vm ubuntu window java访问

我的未来我决定 提交于 2019-12-07 16:35:06
编译前,请先确认gcc、make、patch等编译工具是否已安装,并可正常使用。 资源包: 1. libevent Libevent是一个异步事件处理软件函式库,以BSD许可证释出。Memcached依赖Libevent,因此必须先编译安装Libevent。 下载地址: http://http://www.monkey.org/~provos/libevent-2.0.13-stable.tar.gz wget http: // www.monkey.org / ~provos / libevent-2.0.13-stable.tar.gz tar xzvf libevent-2.0.13-stable.tar.gz ./configure make sudo make install 检测libevent 安装是否成功,输入:# ls -al /usr/lib | grep libevent 2.mecached 不错的文章 http://www.mike.org.cn/articles/ubuntu-install-memcached/ 3.java客户端 http://www.couchbase.org/code/couchbase/java memcached-2.7.jar jettison-1.1.jar http://www.docjar.com/jar_detail

Libevent源码分析-----配置event_base

▼魔方 西西 提交于 2019-12-07 03:17:24
前面的博文都是讲一些Libevent的一些辅助结构,现在来讲一下关键结构体:event_base。 这里作一个提醒,在阅读Libevent源码时,会经常看到backend这个单词。其直译是“后端”。实际上其指的是Libevent内部使用的多路IO复用函数,多路IO复用函数就是select、poll、epoll这类函数。本系列博文中,为了叙述方便,“多路IO复用函数”与“后端”这两种说法都会采用。 配置结构体: 通常我们获取event_base都是通过event_base_new()这个无参函数。使用这个无参函数,只能得到一个默认配置的event_base结构体。本文主要是讲一些怎么获取一个非默认配置的event_base以及可以对event_base进行哪些配置。 还是先看一下event_base_new函数吧。 //event.c文件 struct event_base * event_base_new(void) { struct event_base *base = NULL; struct event_config *cfg = event_config_new(); if (cfg) { base = event_base_new_with_config(cfg); event_config_free(cfg); } return base; } 可以看到