技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 其他 --> RedBridge(redis的http接口)

RedBridge(redis的http接口)

浏览:3134次  出处信息

   曾经何时我也想到过这样一个问题,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资源占用,都比较低

建议继续学习:

  1. redis源代码分析 - persistence    (阅读:31116)
  2. Redis消息队列的若干实现方式    (阅读:10686)
  3. 基于Redis构建系统的经验和教训    (阅读:9256)
  4. 浅谈redis数据库的键值设计    (阅读:8264)
  5. redis在大数据量下的压测表现    (阅读:7363)
  6. redis运维的一些知识点    (阅读:7391)
  7. Redis和Memcached的区别    (阅读:6740)
  8. Redis作者谈Redis应用场景    (阅读:6543)
  9. redis 运维实际经验纪录之一    (阅读:6451)
  10. 记Redis那坑人的HGETALL    (阅读:6301)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1