当前位置:Gxlcms > mysql > RedBridge:RedisforHTTPAPI[推荐]

RedBridge:RedisforHTTPAPI[推荐]

时间:2021-07-01 10:21:17 帮助过:31人阅读

RedBridge 是一款基于redis 的 HTTP API。 使用LUA 直接跟redis 交互。(类似数据库的存储过程) 高效的实现复杂的业务逻辑。 项目网址:http://code.google.com/p/redbridge/ 使用环境:Linux 2.6 软件作者:七夜(李锦星) RedBridge 具有以下特征: 1. 使用C+

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资源占用,都比较低

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

人气教程排行