`
qq362228416
  • 浏览: 34356 次
社区版块
存档分类
最新评论

openresty 前端开发入门四之Redis篇

阅读更多
#### 这章主要演示怎么通过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部分
0
0
分享到:
评论

相关推荐

    openresty,lua-resty-redis 封装工具类.zip

    介绍本项目是基于openresty/lua-resty-redis是章亦春(agentzh)开发的openresty中的操作redis的库。进行二次或封装的工具库。核心功能由openresty/lua-resty-redis完成的。下面假设你已经了解了nginx+luaopenresty...

    openresty-web-dev:openresty网站演示

    openresty 前端开发进阶四之session篇 openresty 前端开发进阶六之websocket篇 openresty 前端开发高级应用一之性能优化 openresty 前端开发高级应用一之动态追踪技术 openresty 简单应用 openresty 灰度发布 ...

    用于 redis 集群的 Openresty lua 客户端 .zip

    resty-redis-集群用于 redis 集群的 Openresty lua 客户端。我们为什么要建立这个客户端?Openresty 没有官方客户端可以支持 redis 集群。(我们可以在openresty/lua-resty-redis#43上看到讨论)。此外,查看其他第...

    2 OpenResty+Lua+Redis 高性能后端接口.docx

    OpenResty+Lua+Redis 高性能后端接口 OpenResty 是基于 Nginx 的高性能 web 服务器,它使用 Lua 语言作为脚本语言来实现动态内容生成和处理。 Lua 是一种轻量级的脚本语言,广泛应用于游戏、嵌入式系统和 web 开发...

    lb:在Openresty(Nginx,LUA和Redis)之上的Dinamic Nginx上游配置负载均衡器API

    在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 (实现多级缓存)+限流(掌握)

    高并发的优化lua + openresty+redis (实现多级缓存)+限流(掌握)

    openresty 入门

    本篇内容将围绕 OpenResty 入门和最佳实践进行详细讲解。 首先,对于想要入门 OpenResty 的初学者来说,了解 Lua 语言是必须的。Lua 是一种轻量级的脚本语言,易于学习,它提供了丰富的数据类型和控制结构,以及...

    OpenResty+Lua+Redis 高性能后端接口.rar

    OpenResty、Lua和Redis是构建高性能后端接口的关键技术,它们在现代Web服务开发中扮演着重要角色。本文将深入探讨这三个组件及其在构建高效系统中的应用。 首先,OpenResty是一个基于Nginx的全功能Web服务平台,它...

    符合 RFC 且支持 ESI 的 Nginx , OpenResty HTTP 缓存,由 Redis 支持.zip

    壁架符合 RFC 规范并支持ESI 的Nginx / OpenResty HTTP 缓存,由Redis提供支持。Ledge 可以作为 Squid / Varnish 等的快速、强大且可扩展的替代品,可以独立安装,也可以集成到现有的 Nginx 服务器或负载均衡器中。...

    读书笔记:基于 openresty + redis + mysql 实现高性能短链生成服务.zip

    读书笔记:基于 openresty + redis + mysql 实现高性能短链生成服务

    lua-nginx-openresty-redis 详细案例源码

    Nginx 教程 基础 Nginx编译安装 Nginx.conf详解 Location 详解 Nginx基础知识 Nginx高性能WEB服务器详解 ... Nginx的11个Phases agentzh 的 Nginx 教程 ... TCP和UDP负载平衡官方参考文档 ... nginx 并发数问题思考:...

    openresty官方学习资料

    首先,我们来看《OpenResty 入门到精通》。这本书主要介绍了OpenResty的基础概念和使用方法,包括如何安装和配置OpenResty环境,理解OpenResty的架构设计,以及如何编写基本的Lua脚本来处理HTTP请求。读者会学习到...

    resty-redis-cluster:Redis集群的Openresty lua客户端

    《深入理解resty-redis-cluster:Openresty Lua中的Redis集群客户端》 在现代Web服务开发中,数据存储和缓存扮演着至关重要的角色。Redis作为一款高性能的键值存储系统,广泛应用于缓存、消息队列等领域。而...

    lua-resty-redis-session:openresty会话模块,使用redis保存会话数据

    lua-resty-redis-session-module 相依性 安装 ...git clone ...cp lua-resty-redis_session/lib/resty/redis_session.lua /usr/local/openresty/lualib/resty/ 例子 设置主机(您的浏览器可能不支持本地主

    openresty redis 集群客户端.zip

    开发人员可以利用这个库来构建高性能的缓存应用,实现数据的快速读写,同时支持Redis集群的高可用性和伸缩性。在Lua中使用Redis集群客户端,可以简化与Redis集群的交互,使得开发者更加专注于业务逻辑的实现,而不是...

    OpenResty网关鉴权方案lua代码(Redis集群版)

    通过使用lua代码的原子性操作,对OpenResty进行增强,实现网关鉴权的功能

    OpenResty网关鉴权方案lua代码(Redis单机版)

    通过使用lua代码的原子性操作,对OpenResty进行增强,实现网关鉴权的功能

    openresty(nginx-lua-module-zh-wiki)中文文档.pdf

    OpenResty 是一个强大的 Web 应用服务器,Web 开发人员可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,更主要的是在性能方面,OpenResty可以 快速构造出足以胜任 10K 以上并发连接响应的超高性能 Web ...

    openresty 最佳实践

    在高级应用中,我们会使用Lua开发各种功能模块,如Lua Resty Redis Library进行Redis数据库的快速访问,以及Lua Resty CJSON Library处理JSON数据的解析和编码。这些库通常涉及复杂的同步和异步操作,需要理解如何在...

    lua-resty-redis-connector:lua-resty-redis的连接实用程序

    `lua-resty-redis-connector` 是一个针对 `lua-resty-...综上所述,`lua-resty-redis-connector` 为 OpenResty 开发者提供了更高效、可靠的 Redis 连接管理工具,是构建高性能、高可用的 Redis 应用的关键组件之一。

Global site tag (gtag.js) - Google Analytics