使用 Lua 脚本语言操作 Redis。

由于大量的 Lua 代码写在 Nginx 中,会使配置文件显得很繁琐,所以这里使用 content_by_lua_file 来引入 Lua 脚本文件。

要使用 content_by_lua_file,需要安装 nginx_lua_module 模块。

安装介绍,猛击这里:nginx_lua_module

大神 章亦春 提供了一个很方便的开发包,如下:

  1. git clone https://github.com/agentzh/lua-resty-redis.git

该包中,有一个 Lib 目录,将 Lib 目录下的文件和子目录拷贝至目录 /data/www/lua

在 Nginx 配置文件中,需要加一行代码,以便引入 redis.lua

注:加在 http 段里。

  1. lua_package_path "/data/www/lua/?.lua;;";

为了使得 lua 脚本的修改能及时生效,需要加入一行代码,如下:

注:在 server 段里,加入代码,如果不加此代码或者设置为 on 时,则需要重启 Nginx。

  1. lua_code_cache off;

在 Nginx 配置文件中,加入一个Location:

  1. location /lua {
  2. content_by_lua_file /data/www/lua/test.lua;
  3. }

注:引入 test.lua 脚本文件

Lua 脚本文件:test.lua

  1. local redis = require "resty.redis"
  2. local cache = redis.new()
  3. local ok, err = cache.connect(cache, '127.0.0.1', '6379')
  4. cache:set_timeout(60000)
  5. if not ok then
  6. ngx.say("failed to connect:", err)
  7. return
  8. end
  9. res, err = cache:set("dog", "an aniaml")
  10. if not ok then
  11. ngx.say("failed to set dog: ", err)
  12. return
  13. end
  14. ngx.say("set result: ", res)
  15. local res, err = cache:get("dog")
  16. if not res then
  17. ngx.say("failed to get dog: ", err)
  18. return
  19. end
  20. if res == ngx.null then
  21. ngx.say("dog not found.")
  22. return
  23. end
  24. ngx.say("dog: ", res)
  25. local ok, err = cache:close()
  26. if not ok then
  27. ngx.say("failed to close:", err)
  28. return
  29. end

测试结果如下:

    1. [root@localhost conf]# curl http://localhost/lua
    2. set result: OK
    3. dog: an aniaml

http://blog.csdn.net/vboy1010/article/details/7892120

Nginx + Lua + redis (一)(转)的更多相关文章

  1. Nginx+Lua+Redis 对请求进行限制

    Nginx+Lua+Redis 对请求进行限制 一.概述 需求:所有访问/myapi/**的请求必须是POST请求,而且根据请求参数过滤不符合规则的非法请求(黑名单), 这些请求一律不转发到后端服务器 ...

  2. Nginx+Lua+Redis整合实现高性能API接口 - 网站服务器 - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - Powered by Discuz!

    Nginx+Lua+Redis整合实现高性能API接口 - 网站服务器 - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - Powered by Disc ...

  3. nginx lua redis 访问频率限制(转)

    1. 需求分析 Nginx来处理访问控制的方法有多种,实现的效果也有多种,访问IP段,访问内容限制,访问频率限制等. 用Nginx+Lua+Redis来做访问限制主要是考虑到高并发环境下快速访问控制的 ...

  4. nginx+lua+redis构建高并发应用(转)

    nginx+lua+redis构建高并发应用 ngx_lua将lua嵌入到nginx,让nginx执行lua脚本,高并发,非阻塞的处理各种请求. url请求nginx服务器,然后lua查询redis, ...

  5. 基于nginx+lua+redis高性能api应用实践

    基于nginx+lua+redis高性能api应用实践 前言 比较传统的服务端程序(PHP.FAST CGI等),大多都是通过每产生一个请求,都会有一个进程与之相对应,请求处理完毕后相关进程自动释放. ...

  6. nginx限制请求之三:Nginx+Lua+Redis 对请求进行限制

    相关文章: <高可用服务设计之二:Rate limiting 限流与降级> <nginx限制请求之一:(ngx_http_limit_conn_module)模块> <n ...

  7. nginx+lua+redis 处理APK包替换

    nginx + lua +redis 安装与使用入门: http://huoding.com/2012/08/31/156 nginx httpEchoModule : http://wiki.ngi ...

  8. nginx+lua+redis

    git clone --branch master https://github.com/openresty/lua-resty-redis.git yum install openssl opens ...

  9. nginx+lua+redis实现灰度发布_test

    nginx+lua+redis实现灰度发布: 灰度发布是指在黑白之间能够平滑过渡的一种方式 AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见, ...

  10. nginx+lua+redis初体验

    1.下载nginx.lua.redis nginx下载地址 wget  http://nginx.org/download/nginx-1.8.0.tar.gz lua下载地址 wget http:/ ...

随机推荐

  1. VSTO学习笔记(三) 开发Office 2010 64位COM加载项

    原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...

  2. poj1459(最大流)

    传送门:Power Network 题意:在一个网络图中有n个点,其中有np个发电站,nc个用户,m条电线;每个发电站,用户,和电线都对应有一个最大的电流;让求出该网络中最大的电流. 分析:最大流裸题 ...

  3. hdu2389(HK算法)

    传送门:Rain on your Parade 题意:t个单位时间后开始下雨,给你N个访客的位置(一维坐标平面内)和他的移动速度,再给M个雨伞的位置,问在下雨前最多有多少人能够拿到雨伞(两个人不共用一 ...

  4. Android 检測网络是否连接

    权限: <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>  <u ...

  5. hdu1254(bfs+dfs)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1254 分析: 真正移动的是箱子,但是要移动箱子需要满足几个条件. 1.移动方向上没有障碍. 2.箱子后 ...

  6. UFLDL教程笔记及练习答案二(预处理:主成分分析和白化)

    首先将本节主要内容记录下来.然后给出课后习题的答案. 笔记: :首先我想推导用SVD求解PCA的合理性. PCA原理:如果样本数据X∈Rm×n.当中m是样本数量,n是样本的维数.PCA降维的目的就是为 ...

  7. 我的EJB学习历程

    http://blog.csdn.net/sinapaper/archive/2004/06/28/28659.aspx http://blog.csdn.net/sinapaper/archive/ ...

  8. Lichee (五岁以下儿童) sysconfig1.fex 配置系统

    sysconfig配置系统,作为一个通用的软件平台,还希望通过它.能够适应用户不同的方案.通过给出一个相应的配置.用户的方案就能够自己主动执行,而不须要改动系统里面的代码,或者又一次给出參数. 一. ...

  9. Java与C/C++有什么区别

    JDK包含JRE, 1-08: Helloworld: 01-08:classpath配置: 运行其它目录下的class文件: classpath一般不加分号,只找classpath下的文件: 后面加 ...

  10. MySQL 全角转换为半角

    ​序言:       用户注冊时候,录入了全角手机号码,所以导致短信系统依据手机字段发送短信失败.如今问题来了,怎样把全角手机号码变成半角手机号码? 1.手机号码全角转换成半角先查询出来全角半角都存在 ...