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

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-web-dev:openresty网站演示

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

    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服务平台,它...

    读书笔记:基于 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网关鉴权方案lua代码(Redis集群版)

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

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

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

    openresty 最佳实践

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

    微服务动态路由实现:openresty+kubernetes

    4. **请求处理**:客户端请求到达 OpenResty 后,OpenResty 会根据 host 名称查询 Redis 获取对应服务的位置,并将请求转发给正确的服务实例。 #### 总结 使用 OpenResty 结合 Kubernetes 的方案,不仅能够有效地...

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

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

    openresty实践

    OpenResty之所以能够高效地处理请求,得益于其内部的cosocket网络模型,它允许开发者以非阻塞的方式执行异步的socket操作。这种机制能够在不增加额外线程或进程的情况下,提高并发处理能力。 对于Web开发人员来说,...

    OpenResty最佳实践

    OpenResty是一套基于Nginx和LuaJIT的高性能Web平台,它将Lua语言和Nginx模块化设计的优点...它为那些对Web前端开发、网关开发以及限流代理服务器开发感兴趣的读者提供了宝贵的指导,同时也为OpenResty社区做出了贡献。

    《OpenResty最佳实践》 .pdf

    《OpenResty最佳实践》这本书籍,旨在向读者介绍OpenResty的使用方法和最佳实践,从而让读者能够充分利用OpenResty进行高效、安全的Web开发。 书籍涵盖了多个知识点,从最基础的Lua脚本语言学习,到OpenResty的高级...

    OpenResty开发最佳实践pdf

    通过揉和众多设计良好的 Nginx 模块,OpenResty 有效地把 Nginx 服务器转变为一个强大的 Web 应用服务器,基于它开发人员可以使用 Lua 编程语言对 Nginx 核心以及现有的各种 Nginx C 模块进行脚本编程,构建出可以...

Global site tag (gtag.js) - Google Analytics