#### 这章主要演示怎么通过lua连接redis,并根据用户输入的key从redis获取value,并返回给用户
操作redis主要用到了lua-resty-redis库,代码可以在[github](https://github.com/openresty/lua-resty-redis)上找得到
而且上面也有实例代码
由于官网给出的例子比较基本,代码也比较多,所以我这里主要介绍一些怎么封装一下,简化我们调用的代码
lua/redis.lua
```
local redis = require "resty.redis"
local config = {
host = "127.0.0.1",
port = 6379,
-- pass = "1234" -- redis 密码,没有密码的话,把这行注释掉
}
local _M = {}
function _M.new(self)
local red = redis:new()
red:set_timeout(1000) -- 1 second
local res = red:connect(config['host'], config['port'])
if not res then
return nil
end
if config['pass'] ~= nil then
res = red:auth(config['pass'])
if not res then
return nil
end
end
red.close = close
return red
end
function close(self)
local sock = self.sock
if not sock then
return nil, "not initialized"
end
if self.subscribed then
return nil, "subscribed state"
end
return sock:setkeepalive(10000, 50)
end
return _M
```
其实就是简单把连接,跟关闭做一个简单的封装,隐藏繁琐的初始化已经连接池细节,只需要调用new,就自动就链接了redis,close自动使用连接池
lua/hello.lua
```
local cjson = require "cjson"
local redis = require "redis"
local req = require "req"
local args = req.getArgs()
local key = args['key']
if key == nil or key == "" then
key = "foo"
end
-- 下面的代码跟官方给的基本类似,只是简化了初始化代码,已经关闭的细节,我记得网上看到过一个 是修改官网的代码实现,我不太喜欢修改库的源码,除非万不得已,所以尽量简单的实现
local red = redis:new()
local value = red:get(key)
red:close()
local data = {
ret = 200,
data = value
}
ngx.say(cjson.encode(data))
```
访问
http://localhost/lua/hello?key=hello
即可获取redis中的key为hello的值,如果没有key参数,则默认获取foo的值
ok,到这里我们已经可以获取用户输入的值,并且从redis中获取数据,然后返回json数据了,已经可以开发一些简单的接口了
[示例代码](https://github.com/362228416/openresty-web-dev) 参见demo4部分
分享到:
相关推荐
介绍本项目是基于openresty/lua-resty-redis是章亦春(agentzh)开发的openresty中的操作redis的库。进行二次或封装的工具库。核心功能由openresty/lua-resty-redis完成的。下面假设你已经了解了nginx+luaopenresty...
openresty 前端开发进阶四之session篇 openresty 前端开发进阶六之websocket篇 openresty 前端开发高级应用一之性能优化 openresty 前端开发高级应用一之动态追踪技术 openresty 简单应用 openresty 灰度发布 ...
resty-redis-集群用于 redis 集群的 Openresty lua 客户端。我们为什么要建立这个客户端?Openresty 没有官方客户端可以支持 redis 集群。(我们可以在openresty/lua-resty-redis#43上看到讨论)。此外,查看其他第...
OpenResty+Lua+Redis 高性能后端接口 OpenResty 是基于 Nginx 的高性能 web 服务器,它使用 Lua 语言作为脚本语言来实现动态内容生成和处理。 Lua 是一种轻量级的脚本语言,广泛应用于游戏、嵌入式系统和 web 开发...
在Openresty(Nginx,LUA和Redis)之上具有动态Nginx上游配置API的Nginx简单负载均衡器。 用法: 建立Docker映像 docker build -t dmatosl/lb . docker run --name lb --rm -i -p 80:8080 -t dmatosl/lb 添加新...
高并发的优化lua + openresty+redis (实现多级缓存)+限流(掌握)
本篇内容将围绕 OpenResty 入门和最佳实践进行详细讲解。 首先,对于想要入门 OpenResty 的初学者来说,了解 Lua 语言是必须的。Lua 是一种轻量级的脚本语言,易于学习,它提供了丰富的数据类型和控制结构,以及...
OpenResty、Lua和Redis是构建高性能后端接口的关键技术,它们在现代Web服务开发中扮演着重要角色。本文将深入探讨这三个组件及其在构建高效系统中的应用。 首先,OpenResty是一个基于Nginx的全功能Web服务平台,它...
《深入理解resty-redis-cluster:Openresty Lua中的Redis集群客户端》 在现代Web服务开发中,数据存储和缓存扮演着至关重要的角色。Redis作为一款高性能的键值存储系统,广泛应用于缓存、消息队列等领域。而...
壁架符合 RFC 规范并支持ESI 的Nginx / OpenResty HTTP 缓存,由Redis提供支持。Ledge 可以作为 Squid / Varnish 等的快速、强大且可扩展的替代品,可以独立安装,也可以集成到现有的 Nginx 服务器或负载均衡器中。...
读书笔记:基于 openresty + redis + mysql 实现高性能短链生成服务
Nginx 教程 基础 Nginx编译安装 Nginx.conf详解 Location 详解 Nginx基础知识 Nginx高性能WEB服务器详解 ... Nginx的11个Phases agentzh 的 Nginx 教程 ... TCP和UDP负载平衡官方参考文档 ... nginx 并发数问题思考:...
首先,我们来看《OpenResty 入门到精通》。这本书主要介绍了OpenResty的基础概念和使用方法,包括如何安装和配置OpenResty环境,理解OpenResty的架构设计,以及如何编写基本的Lua脚本来处理HTTP请求。读者会学习到...
lua-resty-redis-session-module 相依性 安装 ...git clone ...cp lua-resty-redis_session/lib/resty/redis_session.lua /usr/local/openresty/lualib/resty/ 例子 设置主机(您的浏览器可能不支持本地主
通过使用lua代码的原子性操作,对OpenResty进行增强,实现网关鉴权的功能
通过使用lua代码的原子性操作,对OpenResty进行增强,实现网关鉴权的功能
openresty redis 集群客户端姓名lua-resty-redis-cluster 内容待添加。
OpenResty 是一个强大的 Web 应用服务器,Web 开发人员可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,更主要的是在性能方面,OpenResty可以 快速构造出足以胜任 10K 以上并发连接响应的超高性能 Web ...
在高级应用中,我们会使用Lua开发各种功能模块,如Lua Resty Redis Library进行Redis数据库的快速访问,以及Lua Resty CJSON Library处理JSON数据的解析和编码。这些库通常涉及复杂的同步和异步操作,需要理解如何在...
4. **请求处理**:客户端请求到达 OpenResty 后,OpenResty 会根据 host 名称查询 Redis 获取对应服务的位置,并将请求转发给正确的服务实例。 #### 总结 使用 OpenResty 结合 Kubernetes 的方案,不仅能够有效地...