专栏首页AI科技时讯Redis 命令时间花费多原因及解决办法

Redis 命令时间花费多原因及解决办法

Redis 命令时间花费多原因及解决办法

项目问题:

做实时推荐流遇到的问题,一般推荐流是将大的推荐列表划分成多块固定长度(不固定也可以)的内容,并且会记录之前看过的东西,在每次点击刷新后,吐出去来的新的固定块内容(假设k条)。这个过程涉及三个步骤:

  • 查询该uid的推荐列表;
  • 查询该uid看过的历史记录列表;
  • 将历史记录从推荐列表中过滤掉,并吐出新的k条;

数据存储在Redis中,在仿真运行时候,假设给uid吐出200页推荐内容,程序运行的时候,出现了问题:

吐前面页数推荐内容时候挺快的,越往后越慢。

使用的包:

  • redis-py [https://github.com/andymccurdy/redis-py]

绝大多数的时间都花在hgetall上,这里分析是与redis包的反应耗时了,去对应的包里找问题:

这个地方耗时多了,self.read_response()反应慢了,原因可能是该包是使用python实现的。

再去分析self.read_response()函数,并查看reds-py项目的Readme发现:

还有一个hiredis版本,由redis核心团队用c语言实现的,速度是redis-py的10倍,果然C语言还是王道啊!

首先判断是否有hiredis,如果有的话,使用hiredis作为解析参数回应

pip安装之后,再次运行程序:

运行时间减少了很多!

总结

  • 调包前先好好读读项目的Readme文件;
  • hiredis比redis-py在参数解析上快很多;
  • C语言等编程语言比python等脚本语言运行效率高;

本文分享自微信公众号 - AI科技时讯(aiblog_research)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python从入门到熟练(4):基础数据类型

    就像一个盒子(或者容器),可以通过使用定义变量的方式,开辟一块内存空间存储数据,定义变量之后使用变量名调用数据。

    用户3578099
  • 推荐系列(六):深层神经网络模型—— Softmax

    深度神经网络(DNN)模型可以解决矩阵分解的这些局限性。DNN可以轻松地合并查询特征和项目特征(由于网络输入层的灵活性),这有助于捕获用户的特定兴趣并提高建议的...

    用户3578099
  • Keras文本分类实战(上)

    很多时候,人们在网上晒各种东西、抒发情感。个体的情感分析可能没有多大用处,但对大多数人的情感进行分析,就能得到比较有趣的结果。想象一下,当一个热点新闻事件出现后...

    用户3578099
  • Redis未授权访问漏洞复现

    Redis在默认情况下,会绑定在0.0.0.0:6379。如果没有采取相关的安全策略,例如添加防火墙规则、避免其他飞信人来源IP访问等,这样会使Redis 服务...

    ly0n
  • Python里调用redis的方法

    Python 2.7里不是自带redis的,那么在调用redis的时候自然也会报错,比如:

    py3study
  • 初学Redis(2)——用Redis作为Mysql数据库的缓存

    http://blog.csdn.net/qtyl1988/article/details/39519951

    bear_fish
  • 面向前端工程师的 Node.js 入门手册(三)

    前面两篇从前端入门的视角去学习认识了Nodejs,接下来将真正从实战角度来看看Nodejs能做什么,如何从零到一的去完成你的全栈项目。

    五月君
  • 面向前端工程师的Nodejs入门手册(三)

    前面两篇从前端入门的视角去学习认识了Nodejs,接下来将真正从实战角度来看看Nodejs能做什么,如何从零到一的去完成你的全栈项目。

    用户1462769
  • Redis简介及3.0.2编译安装

    Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(...

    用户3003813
  • redis实践及思考

    ? 导语:当面临存储选型时是选择关系型还是非关系型数据库?如果选择了非关系型的redis,redis常用数据类型占用内存大小如何估算的?redis的性能瓶颈又...

    腾讯技术工程官方号

扫码关注云+社区

领取腾讯云代金券