RedBridge: 为Redis提供HTTP API及连接池功能

RedBridge 是一款基于RedisHTTP API。使用LUA直接跟Redis交互,对Redis的连接实现连接池。(类似数据库的存储过程) 高效的实现复杂的业务逻辑。

特性介绍

RedBridge 具有以下特征:

  • 1. 使用C+epoll 编写的Web Server,支持HTTP GET操作
  • 2. 连接池,连接句柄复用,提高跟Redis连接效率
  • 3. 部分类库使用Redis的代码,更加的稳定
  • 4. 使用LUA直接调用Redis命令,实现一次性数据交互实现 复杂的业务逻辑。不需要多次数据交互
  • 5. 服务模型采用单进程,双线程模式
  • 6. 配置文件采用Lua 语法,容易读取和书写
  • 7. RedBridge发布前,还没有类似的开源项目

安装

安装文档(以下安装文档由暗黑提供)

lualua下载
tcmalloc:google-perftools

Redis需要这个带script的版本才行:redis-2.2.111-scripting.tar.gz

Redis内部执行lua代码的 官方blog文章:redis-and-scripting

1.下载支持LUA 版本的Redis

tar redis-2.2.111-scripting.tar.gz
cd  redis-2.2.111-scripting/src
make
make install
redis-server  /usr/local/src/redis-2.2.111-scripting/redis.conf    #redis 默认配置文件
redis-server  /usr/local/redis/redis.conf         #启动redis

2.LUA 安装

tar -zxvf lua-5.1.4.tar.gz
cd lua-5.1.4
make

提示:

Please do
make PLATFORM
where PLATFORM is one of these:
aix ansi bsd freebsd generic linux macosx mingw posix solaris
See INSTALL for complete instructions.

如果系统平台名称是否在支持的列表中,如果存在则继续运行 make PLATFORM 如果不存在 直接运行 make  generic.

make generic
make install

测试LUA 安装是否成功

shell > lua
print ('aaa')

aaa  则表示成功。

3.安装  google-perftools

tar -zxvf google-perftools-1.8.3.tar.gz
cd  google-perftools-1.8.3
./configure  prefixx=/usr/local/google-perftools/
make
make  install

4.安装RedBridge

./configure --prefix=RedBridge安装目录 --tcmalloc=google-perftools安装目录 --lua=lua安装目录
make
make install

如果没报错的话,就安装成功了。
安装后目录

.
├── script(lua 代码 放此处)
│   └── read.lua (lua示例代码)
├── redbridge
├── RedBridge.lua (配置文件)

程序启动流程

  • 1. redbridge 解析 RedBridge.lua 配置文件
  • 2. 把lua代码文件 加载到内存HashTable
  • 3. 初始化连接池,建立数条跟后端Redis的连接

用户访问流程

案例分享

之前就职于一家精准广告投放公司。是和各个门户网站合作投放广告,所以每天的访问量也很大。原先广告投放核心是采用
Apache module方式,定期从mysql重载广告素材,投放条件等数据。

这个投放核心存在以下问题

  • 1. 需要再apache module 写大量的业务逻辑 C代码(比如根据页面关键词、IP等条件进行广告投放).  使C代码更加的复杂。如果缺少完整的文档。别人很难接手维护
  • 2. 投放核心 需要定期从MySQL重载数据。
  • 3. 代码结构不清晰。维护不容易
  • 4. 因为业务需要,经常需要修改修改业务逻辑。所以要反复编译、部署、测试。比较麻烦

采用RedBridge 新架构后带来的好处

  • 1. 业务逻辑和核心代码区分开来。使代码结构更加清晰
  • 2. 因为业务逻辑使用lua来实现,使用不会C的开发人员也可以轻松修改lua代码 来改变业务逻辑
  • 3. 广告数据和定向条件 都存储在Redis的不同数据类型中。后台更新数据的时候,直接由PHP把数据加载到Redis中去。不用定期重载mysql的数据

性能

根据热心网友”暗黑”实际测试,比nginx+php和nodejs方式高。 内存占用和CPU资源占用,都比较低

anyShare分享此文章的同学,将有机会送我iphone5!
          

无觅相关文章插件,快速提升流量

分类 Redis · tag , , , ,

    • 和agentzh的Redis2NginxModule 还是有区别的。 Redis2NginxModule执行的是原始redis命令。RedBridge 是能用lua直接调用redis命令,实现复杂的业务逻辑,只用一次交互就行。