一种openresty在init_by_lua_file阶段读取redis到共享内存的方法

WBOY
发布: 2016-07-28 08:27:38
原创
2203 人浏览过

前提:

        关于 openresty 或者 ngx_lua 请参考:http://openresty.org/en/

问题:

        使用openresty读取redis内的数据时,在init_by_lua_file中是不能连接redis的,所以有时候只能在rewrite或者access阶段读取redis数据,用什么办法在初始化阶段读取呢?

解决办法:

采用在init阶段调用shell命令的方法,相当于在init阶段,执行一个shell命令,读取redis数据,把读取的文本数据进行解析,即可以实现读取redis数据到nginx中

举例:

        1 redis中存在一个hash, 存储数据为:

hmset  test_hash f1 v1 f2 v2 f3 v3

        2 init_by_lua_file中读取的代码为:

        local cmd = "redis-cli  hgetall test_hash"

local f = io.popen(cmd)

        local content = f:read("*a")

         f:close()

以上 content中内存即redis中的数据。

需要注意,此处的content是字符串,需要自己重新解析成字典,可以存入变量,也可以存在共享内存中。

以上就介绍了 一种openresty在init_by_lua_file阶段读取redis到共享内存的方法,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板