openresty笔记-访问memcache和mysql,


worker_processes  1;                                                                                                                         
error_log logs/error.log;
events {
    worker_connections 1024;
}
http {
    server {
        listen 8080;
		
        location /hello_world {
            default_type text/html;
            content_by_lua '
                ngx.say("<p>hello, world</p>")
            ';
        }

        location /memcache_test {
			default_type text/plain;
			content_by_lua '
				--args
				local args = ngx.req.get_uri_args()
				if (args["key"] == nil) then
					return
				end
				--new
				local memcached = require "resty.memcached"
				local memc , err = memcached:new()
				if not memc then 
					ngx.say("faild to init memc:" , err)
					return
				end
				
				memc:set_timeout(1000)
				--connect
				local ok , err = memc:connect("127.0.0.1" , 11211)
				if not ok then 
					ngx.say("faild to connect:" , err)
					return
				end
				--get
				local res , flags , err = memc:get(args["key"])
				if err then
					ngx.say("faild to get: " , err)
					return
				end
				
				if res then
					ngx.say("get key [" .. args["key"] .. "] " .. "[" .. res .. "]")
				else
					ngx.say("not get key [" .. args["key"] .. "]")
				end
				
				--set
				local ok , err = memc:set(args["key"] , args["key"])
				if ok then
					ngx.say("set ok")
				end
			';
        }
		
		location /mysql_test{
			default_type text/plain;
			content_by_lua '
				local mysql = require "resty.mysql"
				--new
				local db , err = mysql:new()
				if not db then 
					ngx.say("faild to init mysql: " , err)
					return
				end
				
				db:set_timeout(1000)
				
				--connect
				local ok , err , errno , sqlstate = db:connect{
					host = "127.0.0.1",
					port = 3306,
					database = "test",
					user = "root",
					password = "123456",
					max_packet_size = 1024 * 1024
				}
				
				if not ok then
					ngx.say("failed to connect to mysql : ", err, ": ", errno, " ", sqlstate)
					return
				end
				
				ngx.say("connected to mysql")
				
				--create table
				local sql = [[create table if not exists `test`(
					`id` int(11) primary key not null auto_increment,
					`name` varchar(100) not null default \'\'
				) engine=Innodb default charset=utf8]]
				
				local res , err , errno , sqlstate = db:query(sql)
				
				if not res then
					ngx.say("create table error: ", err, ": ", errno, ": ", sqlstate, ".")
					return
				end
				
				--insert
				sql = "insert into `test` (`name`) values (\'fish\')"
				local res , err , errno , sqlstate = db:query(sql)
				if not res then
					ngx.say("insert error: ", err, ": ", errno, ": ", sqlstate, ".")
					return
				end
				
				--select
				sql = "select * from `test`"
				local res , err , errno , sqlstate = db:query(sql)
				if not res then
					ngx.say("select error: ", err, ": ", errno, ": ", sqlstate, ".")
					return
				end
				
				local cjson = require "cjson"
				ngx.say(cjson.encode(res))
				
				--delete
				sql = "delete from `test`"
				local res , err , errno , sqlstate = db:query(sql)
				if not res then
					ngx.say("delete error: ", err, ": ", errno, ": ", sqlstate, ".")
					return
				end
			';
		}
    }
}

相关内容

    暂无相关文章