redis性能提升

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)))

运行结果:

 

以上是关于redis性能提升的主要内容,如果未能解决你的问题,请参考以下文章

使用Redis管道提升性能

redis性能提升

Redis 6.0 推出,性能提升了 30%!!

使用springboot cache + redis缓存时使用gzip压缩以提升性能

redis使用管道pipeline提升批量操作性能(php演示)

redis性能提升之pipeline