在nginx中使用lua直接访问mysql和memcaced达到数据接口的统一_MySQL
May 31, 2016 am 08:48 AMNginx
bitsCN.com安装nginx参见《nginx+lua+redis构建高并发应用》
让nginx 中的nginx_lua_module支持mysql 和memcache
下载
https://github.com/agentzh/lua-resty-memcached
https://github.com/agentzh/lua-resty-mysql
对于访问接口的统一有很多的处理方式,这里介绍使用nginx lua 访问mysql并用memcache缓存起来。
配置如下:
... location /getinfo { default_type 'text/plain'; content_by_lua ' local args = ngx.req.get_uri_args() if args["appleid"] == nil then ngx.say("param appleid is nil") return end local memcached = require "memcached" local memc, err = memcached:new() if not memc then ngx.say("failed to instantiate memc: ", err) return end memc:set_timeout(1000) -- 1 sec local ok, err = memc:connect("172.16.18.114", 11211) if not ok then ngx.say("failed to connect: ", err) return end local res, flags, err = memc:get(args["appleid"]) if err then ngx.say("failed to get memc: ", err) return end if not res then local mysql = require "mysql" local db, err = mysql:new() if not db then ngx.say("failed to instantiate mysql: ", err) return end db:set_timeout(1000) -- 1 sec local ok, err, errno, sqlstate = db:connect{ host = "172.16.18.162", port = 3306, database = "test", user = "root", password = "cpyf", max_packet_size = 1024 * 1024 } if not ok then ngx.say("failed to connect: ", err, ": ", errno, " ", sqlstate) return end -- ngx.say("connected to mysql.") sql = "select * from tagval where tag = /'" .. args["appleid"] .. "/'" res, err, errno, sqlstate = db:query(sql) if not res then ngx.say("bad result: ", err, ": ", errno, ": ", sqlstate, ".") return end local json = require "json" ngx.say("mysql found") ngx.say(json.encode(res)) local ok, err = memc:set(args["appleid"], json.encode(res)) if not ok then ngx.say("failed to set memc: ", err) return end local ok, err = db:set_keepalive(0, 100) if not ok then ngx.say("failed to set keepalive: ", err) return end return end ngx.say("memc found") ngx.say(res) memc:set_keepalive(0, 100) '; } ...
ログイン後にコピー
第二次运行:
curl --gethttp://app.ca-sim.com/getinfo?appleid=jfy
mysql found[{"val":"123","tag":"jfy"}]
ログイン後にコピー
第二次后运行:
curl --gethttp://app.ca-sim.com/getinfo?appleid=jfy
memc found[{"val":"123","tag":"jfy"}]
ログイン後にコピー
结果已被缓存
bitsCN.comこのウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

人気の記事
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌

人気の記事
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7280
9


Java チュートリアル
1622
14


CakePHP チュートリアル
1340
46


Laravel チュートリアル
1257
25


PHP チュートリアル
1205
29



Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか?

Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし)

MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド

共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか?

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか?
