Openrestyベストケース|第6編:OpenResty接続Mysql


転載は出典を明記してください.http://blog.csdn.net/forezp/article/details/78616698本文は方志朋のブログから
個人ブログの純版:https://www.fangzhipeng.com/openresty/2018/01/01/openresty-best-practice-6-mysq.html
centosインストールmysl
Centosシステムでmysqlをインストールし、mysql-community-release-el 7-5をダウンロードします.noarch.rpm、そしてyumで取り付けて、取り付け過程はずっと【Y】を確定すればいいです.
cd /usr/downloads/

wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

rpm -ivh mysql-community-release-el7-5.noarch.rpm

yum install mysql-community-server



インストールに成功したら、mysqlを再起動し、mysqlデータベースに入り、rootユーザーにパスワードを設定します.パスワードは「123」です.
service mysqld restart

mysql -u root -p

set password for root@localhost = password('123'); 


Openresty接続mysql
lua-resty-mysqlモジュールの公式ドキュメントアドレス:https://github.com/openresty/lua-resty-mysql
lua-resty-mysql - Lua MySQL client driver for ngx_lua based on the cosocket API
lua-resty-mysqlモジュールはcosocket APIに基づいてngx_luaはLua MySQLクライアントを提供します.100%非ブロックを保証します.
vim/usr/example/lua/test_mysql.lua、次のコードを追加します.
local function close_db(db)  
    if not db then  
        return  
    end  
    db:close()  
end  
  
local mysql = require("resty.mysql")  
 
local db, err = mysql:new()  
if not db then  
    ngx.say("new mysql error : ", err)  
    return  
end  

db:set_timeout(1000)  
  
local props = {  
    host = "127.0.0.1",  
    port = 3306,  
    database = "mysql",  
    user = "root",  
    password = "123"  
}  
  
local res, err, errno, sqlstate = db:connect(props)  
  
if not res then  
   ngx.say("connect to mysql error : ", err, " , errno : ", errno, " , sqlstate : ", sqlstate)  
   return close_db(db)  
end  
 
local drop_table_sql = "drop table if exists test"  
res, err, errno, sqlstate = db:query(drop_table_sql)  
if not res then  
   ngx.say("drop table error : ", err, " , errno : ", errno, " , sqlstate : ", sqlstate)  
   return close_db(db)  
end  
  

local create_table_sql = "create table test(id int primary key auto_increment, ch varchar(100))"  
res, err, errno, sqlstate = db:query(create_table_sql)  
if not res then  
   ngx.say("create table error : ", err, " , errno : ", errno, " , sqlstate : ", sqlstate)  
   return close_db(db)  
end  
  

local insert_sql = "insert into test (ch) values('hello')"  
res, err, errno, sqlstate = db:query(insert_sql)  
if not res then  
   ngx.say("insert error : ", err, " , errno : ", errno, " , sqlstate : ", sqlstate)  
   return close_db(db)  
end  
  
res, err, errno, sqlstate = db:query(insert_sql)  
  
ngx.say("insert rows : ", res.affected_rows, " , id : ", res.insert_id, "
") local update_sql = "update test set ch = 'hello2' where id =" .. res.insert_id res, err, errno, sqlstate = db:query(update_sql) if not res then ngx.say("update error : ", err, " , errno : ", errno, " , sqlstate : ", sqlstate) return close_db(db) end ngx.say("update rows : ", res.affected_rows, "
") local select_sql = "select id, ch from test" res, err, errno, sqlstate = db:query(select_sql) if not res then ngx.say("select error : ", err, " , errno : ", errno, " , sqlstate : ", sqlstate) return close_db(db) end for i, row in ipairs(res) do for name, value in pairs(row) do ngx.say("select row ", i, " : ", name, " = ", value, "
") end end ngx.say("
") local ch_param = ngx.req.get_uri_args()["ch"] or '' local query_sql = "select id, ch from test where ch = " .. ngx.quote_sql_str(ch_param) res, err, errno, sqlstate = db:query(query_sql) if not res then ngx.say("select error : ", err, " , errno : ", errno, " , sqlstate : ", sqlstate) return close_db(db) end for i, row in ipairs(res) do for name, value in pairs(row) do ngx.say("select row ", i, " : ", name, " = ", value, "
") end end local delete_sql = "delete from test" res, err, errno, sqlstate = db:query(delete_sql) if not res then ngx.say("delete error : ", err, " , errno : ", errno, " , sqlstate : ", sqlstate) return close_db(db) end ngx.say("delete rows : ", res.affected_rows, "
") close_db(db)

上記のコードでは、基本的な創表、データの挿入、データの修正、データの照会、データの削除の機能を示しています.
ここで使用されるlua-resty-mysqlのいくつかのAPIメソッド:
  • syntax:db,err=mysql:new()mysqlデータベース接続オブジェクト
  • を作成する
  • syntax:ok,err=db:connect(options)リモート接続mysqlを試みる
  • host mysqlのホスト名
  • portポート
  • databaseデータベース名
  • userユーザー名
  • passwordパスワード
  • charset符号化
  • syntax: db:set_timeout(time)データベース接続タイムアウト時間
  • を設定する
  • syntax: ok, err = db:set_keepalive(max_idle_timeout,pool_size)接続プール
  • を設定する.
  • syntax:ok,err=db:close()データベースを閉じる
  • syntax: bytes, err = db:send_query(query)送信クエリ
  • lua-resty-mysqlのいくつかの肝心なAPI方法、参照https://github.com/openresty/lua-resty-mysql#table-of-contents
    vim/usr/example/example.confのプロファイル構成:
    
    location /lua_mysql {
       default_type 'text/html';
       lua_code_cache on;
       content_by_lua_file /usr/example/lua/test_mysql.lua;
     }
    
    

    ブラウザアクセスhttp://116.196.177.123/lua_mysql、ブラウザには次の内容が表示されます.
    insert rows : 1 , id : 2
    update rows : 1
    select row 1 : ch = hello
    select row 1 : id = 1
    select row 2 : ch = hello2
    select row 2 : id = 2
    
    delete rows : 2
    
    

    詳細
    史上最も簡単なSpringCloudチュートリアルの概要
    SpringBootチュートリアルの概要
    Java面接問題シリーズまとめ
    Openresty最佳案例 | 第6篇:OpenResty连接Mysql_第1张图片スキャンコード公衆番号に注目サプライズ
    (当駅の文章を転載するには作者と出典方志朋のブログを明記してください)