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性能提升的更多相关文章

  1. redis性能提升之pipeline

    1.以前正常使用过程 客户端向服务器发送查询,并从套接字读取,通常以阻塞的方式,用于服务器响应. 服务器处理命令并将响应发送回客户端. 也就是每个命令都会有一来以往的过程 2.管道的意义 如果能将连续 ...

  2. Redis大幅性能提升之Batch批量读写

    Redis大幅性能提升之Batch批量读写 提示:本文针对的是StackExchange.Redis 一.问题呈现 前段时间在开发的时候,遇到了redis批量读的问题,由于在StackExchange ...

  3. memcache 与 redis 为web app 带来的性能提升

    memcache 与 redis 为web app 带来的性能提升 参考: 1. http://www.cnblogs.com/ToDoToTry/p/3513688.html

  4. Redis性能问题排查解决手册(七)

     阅读目录: 性能相关的数据指标 内存使用率used_memory 命令处理总数total_commands_processed 延迟时间 内存碎片率 回收key 总结 性能相关的数据指标 通过Red ...

  5. paip.cache 缓存架构以及性能提升总结

    paip.cache 缓存架构以及性能提升总结 1         缓存架构以及性能(贯穿读出式(LookThrough) 旁路读出式(LookAside) 写穿式(WriteThrough) 回写式 ...

  6. Redis性能问题排查解决手册

    转自:http://www.cnblogs.com/mushroom/p/4738170.html 阅读目录: 性能相关的数据指标 内存使用率used_memory 命令处理总数total_comma ...

  7. 关于redis性能问题分析和优化

    一.如何查看Redis性能 info命令输出的数据可以分为10个分类,分别是: server,clients,memory,persistence,stats,replication,cpu,comm ...

  8. TOP100summit:【分享实录-华为】微服务场景下的性能提升最佳实践

    本篇文章内容来自2016年TOP100summit华为架构部资深架构师王启军的案例分享.编辑:Cynthia 王启军:华为架构部资深架构师.负责华为的云化.微服务架构推进落地,前后参与了华为手机祥云4 ...

  9. Redis(二十一):Redis性能问题排查解决手册(转)

    性能相关的数据指标 通过Redis-cli命令行界面访问到Redis服务器,然后使用info命令获取所有与Redis服务相关的信息.通过这些信息来分析文章后面提到的一些性能指标. info命令输出的数 ...

随机推荐

  1. Speculative Execution in Hadoop

    来自:http://blog.csdn.net/macyang/article/details/7880671 所谓的推测执行,就是当所有task都开始运行之后,Job Tracker会统计所有任务的 ...

  2. 页面载入时通过获取GridView某行某列的值来控制某一列的控件属性

    通过获取状态来控制"查看"button的Visible属性值. 在前台GridView中加入 OnRowDataBound="GridView1_RowDataBound ...

  3. windows 配置ftp server

  4. 配置zip版本的Tomcat启动

    1.配置jdk 2.CATALINA_HOME=c:\tomcat CATALINA_BASE=c:\tomcat 3.classpath=%CATALINA_HOME%\common\lib\ser ...

  5. libevent个人理解

    1.利用了前置声明来在c语言的基础上进行封装操作.即在include目录下防止event.h等头文件,在这些头文件中只暴露struct的声明却不暴露其定义,对于如event_base等结构的操作均使用 ...

  6. Fail Fast and Fail Safe Iterators in Java

    https://www.geeksforgeeks.org/fail-fast-fail-safe-iterators-java/ Fail Fast and Fail Safe Iterators ...

  7. idea 设置黑色背景

      idea 设置黑色背景 CreateTime--2018年4月26日10:32:38 Author:Marydon 设置-->Appearance-->Theme调为:Darcula- ...

  8. 〖Linux〗Qt+gsoap开发客户端程序,服务端地址设定的字符串转换处理

    之所以写出来,是由于经常因为这个问题屡屡丢面子.. 一般情况下,QString转换成(char*),我们一般直接使用: char *str = qstr->text().toLatin1().d ...

  9. python之函数用法iter()

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法iter() #iter() #说明:对一个对象调用 iter() 就可以得到它的迭代 ...

  10. python之函数用法file()

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法file() #file() #说明:file()内建函数它的功能等于open(),但 ...