• redis性能提升



    1.redis请求执行原理
    redis客户端与redis服务器之间使用TCP协议进行连接,一个科幻可以通过一个socket连接发送多个请求命令,
    但每个请求命令发出后client通常会阻塞并等待redis服务器处理,redis服务器处理完毕后会将结果通过响应报文返回给client,因此当执行多条命令的时候都需要等待上一条命令执行完毕后才能执行。

    2.合并请求
    每次向redis服务器执行请求,都是一次TCP round trip,
    因此将请求合并,作为一次请求,可以很好的提升性能。
    示例如下:

    import redis
    cache = redis.Redis('127.0.0.1',
                        6379,
                        db=3,
                        password='test',
                        decode_responses=True
                       )
    cache.delete('test_set')
    for i in range(10):
        cache.sadd('test_set',i)
    print(cache.sinter('test_set'))

    运行结果:

    import redis
    cache = redis.Redis('127.0.0.1',
                        6379,
                        db=3,
                        password='test',
                        decode_responses=True
                       )
    values = [0,1,2,3,4,5,6,7,8,9]
    cache.delete('test_set')
    cache.sadd('test_set',*values)
    print(cache.sinter('test_set'))

    运行结果:

    3.批量处理
    每次向redis服务器发送请求,最后发送批量执行命令,redis服务器执行完毕,返回响应。
    当不能合并请求时,如每次sadd的key值不同,可使用批量处理的方式,提升性能。
    示例如下:

    import redis
    cache = redis.Redis('127.0.0.1',
                        6379,
                        db=3,
                        password='test',
                        decode_responses=True
                       )
    for i in range(10):
        cache.delete('test_set_'+str(i))
    for i in range(10):
        cache.sadd('test_set_'+str(i),i)
    for i in range(10):
        print(cache.sinter('test_set_'+str(i)))

    运行结果:

    import redis
    cache = redis.Redis('120.26.217.149',
                        6379,
                        db=3,
                        password='51yunchedevredis',
                        decode_responses=True
                       )
    pipeline = cache.pipeline()
    for i in range(10):
        pipeline.delete('test_set_'+str(i))
    for i in range(10):
        pipeline.sadd('test_set_'+str(i),i)
    pipeline.execute()
    for i in range(10):
        print(cache.sinter('test_set_'+str(i)))

    运行结果:

  • 相关阅读:
    十五分钟建立精美网站
    WebMatrix教程(一) (关注Microsoft 的最新武器:建立你的第一个WebMatrix网站)
    数据同步框架MS Sync Framework IDE快速开发支持Local Database Cache
    Interview SeniorSoftwareEngineers
    学JQuery最新免费教程[转]
    Visual Studio 2010 支持HTML5 和 CSS3
    Orchard:打包和共享模块
    CSLA.NET 框架开发实战
    如何真正提高ASP.NET网站的性能
    敏捷英语
  • 原文地址:https://www.cnblogs.com/shijingjing07/p/7499044.html
Copyright © 2020-2023  润新知