RedBridge(redis的http接口)
曾经何时我也想到过这样一个问题,redis这样一个高并发、高性能的缓存(或者说是DB)的服务端程序,为何不开放HTTP接口?或许很多人也这么想过,当我正有这个想法的时候,一个崭新的项目诞生了:RedBridge,他是一款能使用http请求就能操作redis中间件,其详细介绍如下:
RedBridge 是一款基于redis 的 HTTP API。 使用LUA 直接跟redis 交互。(类似数据库的存储过程) 高效的实现复杂的业务逻辑。
项目网址:http://code.google.com/p/redbridge/
使用环境:Linux 2.6
软件作者:七夜(李锦星)
RedBridge 具有以下特征:
1. 使用C+epoll 编写的Web Server,支持HTTP GET操作
2. 连接池,连接句柄复用,提高跟redis连接效率
3. 部分类库使用Redis的代码,更加的稳定
4. 使用LUA直接调用Redis命令,实现一次性数据交互实现 复杂的业务逻辑。不需要多次数据交互
5. 服务模型采用单进程,双线程模式
6. 配置文件采用Lua 语法, 容易读取和书写
7. RedBridge发布前,还没有类似的开源项目
安装文档(以下安装文档由暗黑提供)
lua: http://www.lua.org/download.html
tcmalloc: http://code.google.com/p/google-perftools/
redis 需要这个带script的版本才行 http://code.google.com/p/redis/downloads/detail?name=redis-2.2.111-scripting.tar.gz&can=2&q=
redis 内部执行lua代码的 官方blog文章: http://antirez.com/post/redis-and-scripting.html
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资源占用,都比较低
建议继续学习:
- redis源代码分析 - persistence (阅读:31149)
- Redis消息队列的若干实现方式 (阅读:10711)
- 基于Redis构建系统的经验和教训 (阅读:9294)
- 浅谈redis数据库的键值设计 (阅读:8293)
- redis在大数据量下的压测表现 (阅读:7386)
- redis运维的一些知识点 (阅读:7426)
- Redis和Memcached的区别 (阅读:6786)
- Redis作者谈Redis应用场景 (阅读:6571)
- redis 运维实际经验纪录之一 (阅读:6475)
- 记Redis那坑人的HGETALL (阅读:6321)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:IM鑫爷 来源: IM鑫爷
- 标签: RedBridge redis
- 发布时间:2011-11-21 00:17:22
- [47] IOS安全–浅谈关于IOS加固的几种方法
- [46] 图书馆的世界纪录
- [46] 如何拿下简短的域名
- [46] Oracle MTS模式下 进程地址与会话信
- [43] 【社会化设计】自我(self)部分――欢迎区
- [42] 读书笔记-壹百度:百度十年千倍的29条法则
- [41] android 开发入门
- [41] 界面设计速成
- [39] 视觉调整-设计师 vs. 逻辑
- [36] Go Reflect 性能