美文网首页
nginx直接访问redis

nginx直接访问redis

作者: loloxiaoz | 来源:发表于2017-08-25 01:34 被阅读0次

    简介

           redis2-nginx-module 是一个支持 Redis 2.0 协议的 Nginx upstream 模块,它可以让 Nginx 以非阻塞方式直接防问远方的 Redis 服务,同时支持 TCP 协议和 Unix Domain Socket 模式,并且可以启用强大的 Redis 连接池功能。详情见github https://github.com/openresty/redis2-nginx-module

    示例

    upstream redisPool{ 
        server ${KVSTORE_HOST}:${KVSTORE_PORT}; 
        keepalive 1024;
    } 
    server { 
        location = /v1/qrcode/loginInfo {
               default_type application/json; 
               redis2_query auth ${KVSTORE_AUTH}; 
               redis2_query select ${KVSTORE_DB}; 
               redis2_query get $arg_uuid; 
               redis2_pass redisPool; 
        }
    }
    

    测试结果

           对比使用nginx+php+redis,性能大概提升了6倍左右

    API COMMAND RESULT
    使用redis2-nginx-module从redis
    中取键值为hello的值
    siege '${url}?uuid=hello'
    -c 500 -r 50 -b -q
    Transactions: 25000 hits
    Availability: 100.00 %
    Elapsed time: 2.31 secs
    Data transferred: 1.07 MB
    Response time: 0.04 secs
    Transaction rate: 10822.51 trans/sec
    Throughput: 0.46 MB/sec
    Concurrency: 479.55
    Successful transactions: 25000
    Failed transactions: 0
    Longest transaction: 0.15
    Shortest transaction: 0.01
    使用redis+php+redis从redis
    中取键值为hello的值
    siege '{$url}?uuid=hello'
    -c 500 -r 50 -b -q
    Transactions: 25000 hits
    Availability: 100.00 %
    Elapsed time: 16.44 secs
    Data transferred: 0.17 MB
    Response time: 0.32 secs
    Transaction rate: 1520.68 trans/sec
    Throughput: 0.01 MB/sec
    Concurrency: 493.92
    Successful transactions: 25000
    Failed transactions: 0
    Longest transaction: 0.58
    Shortest transaction: 0.02

           这种使用方法适合对性能并发要求高的接口,比如二维码登陆中客户端轮询用户是否扫码成功,订单支付流程中客户端轮询订单是否支付成功
           由于没有做参数检查,为了安全考虑, redis中db应该选择单独的库

    相关文章

      网友评论

          本文标题:nginx直接访问redis

          本文链接:https://www.haomeiwen.com/subject/ykbydxtx.html