使用 Lua 脚本语言操作 Redis。

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

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

安装介绍,猛击这里:nginx_lua_module

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

[plain] view plain copy  print?
  1. git clone https://github.com/agentzh/lua-resty-redis.git

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

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

注:加在 http 段里。

[plain] view plain copy  print?
  1. lua_package_path "/data/www/lua/?.lua;;";

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

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

[plain] view plain copy  print?
  1. lua_code_cache off;

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

[plain] view plain copy  print?
  1. location /lua {
  2. content_by_lua_file /data/www/lua/test.lua;
  3. }

注:引入 test.lua 脚本文件

Lua 脚本文件:test.lua

[plain] view plain copy  print?
  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

测试结果如下:

[plain] view plain copy  print?
  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 访问频率限制(转)

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

  2. nginx+lua+redis 灰度发布实现方案

    背景: 公司要把现有的某传统项目进行微服务化,拆分后要分批次预发布,实现某部分使用户使用微服务模块,其他用户使用传统项目.待微服务稳定.无bug后全部用户迁移至微服务系统. 以上为背景,实现此方案使用 ...

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

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

  4. nginx+lua+redis deny ip

    2019独角兽企业重金招聘Python工程师标准>>> nginx+lua+redis实现ip黑名单 1.安装LuaJIT LuaJIT LuaJIT即采用C语言写的Lua代码的解释 ...

  5. 利用nginx+lua+redis实现反向代理方法教程

    这篇文章主要给大家介绍了利用nginx+lua+redis实现反向代理方法教程,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧. 前言 最近因为工作需要,要进行IVR的 ...

  6. windows下nginx+lua+redis实现短域名服务

    nginx+lua+redis 环境搭建: 我使用的是大牛 ZhangYichun 提供的集成包快速安装. 非常简单,下载 ngx_openresty,该集成包中有:Nginx,Lua或Luajit, ...

  7. nginx+lua+redis实现降级

    前言 商城或web站点的用户访问量出乎意料地增加了很多,超出了系统的负载能力, 系统有些扛不住,继而导致注 册,下单,支付什么的全部在绕圈卡住,继而导致公司业务损失了不少用户和订单.. 一.引子 面对 ...

  8. 基于abtest思想的流量切换(nginx lua redis)

    使用前提: 项目重构了,旧项目还在线上运行,新项目准备替换线上的旧项目 最终目标: 要实现实时切换新旧项目,保证如果新项目上线后有问题,可以立刻快速的将流量切回旧项目 方案: 关于abtest的基本原 ...

  9. nginx+lua+redis实现post请求接口之黑名单(一)

    一.概述 需求:所有访问/webapi/**的请求必须是POST请求,而且根据请求参数过滤不符合规则的非法请求(黑名单), 这些请求一律不转发到后端服务器(Tomcat) 实现思路:通过在Nginx上 ...

最新文章

  1. CSS中的id选择器和class选择器简单介绍
  2. Win7 64位的SSDTHOOK(1)---SSDT表的寻找
  3. C语言数据结构(大话数据结构——笔记4)第六章:树
  4. c语言中的fock方法输出hello,涉及fork()的C程序输出的说明
  5. 「Swift」笔记第一章:The Basic
  6. Cucumber入门之_argument
  7. AS3 in FlashDevelop
  8. 计算机视觉实验数学形态学,计算机视觉形态学边缘检测.doc
  9. MySQL学习笔记:MySQL管理
  10. 我的第一篇Live Write 写的博客
  11. JavaScript 编程精解 中文第三版 十七、在画布上绘图
  12. 【libnice】艰难的meson+ ninja手动编译过,vs2022 v143 debug
  13. android视频教程_创建数据库与完成数据添删改查,17_创建数据库与完成数据添删改查...
  14. Python制作个人动漫头像(简化版)
  15. 开博2012在情人节!
  16. 35岁的网络工程师入行需要注意什么?
  17. 笔记本电脑黑屏 笔记本开机黑屏 笔记本黑屏怎么办
  18. 划重点!GDPR,阿里云的六问六答
  19. 这些夕阳产品的编程语言即将死去,有你学的吗?
  20. Linux单网卡双IP

热门文章

  1. 三星emcp型号详解_Samsung eMCP(三星eMCP).pdf
  2. 4天快速入门python数据挖掘_4天快速入门Python数据挖掘
  3. ppt设置外观样式_如何设置更符合需要的幻灯片背景?
  4. PaddlePaddle 中的若干基础命令中的问题
  5. 编程那么苦,学习那么累,这组漫画可以治愈(慢慢品味)
  6. 2021年春季学期-信号与系统-第十一次作业参考答案-第六小题
  7. 2021年春季学期-信号与系统-第七次作业参考答案-第八小题
  8. 第十五届全国大学生智能汽车竞赛 信标组亮灯顺序和次数
  9. AD5933不同频率下的转换结果
  10. 工行服务器维护时间,工行服务器安全链接