美文网首页
关于redis批量获取数据pipeline

关于redis批量获取数据pipeline

作者: 葡萄柚子茶 | 来源:发表于2020-03-23 17:10 被阅读0次

Redis批量获取数据

Redis是建立在TCP协议上的CS架构,客户端client对redis server采取请求响应的方式交互.每次交互会有网络延迟,大约30ms.
假设有这样一个场景,redis中存储上千个key值,获取每个key对应field的value,那么要向redis请求上千次 hget(key, field),获取响应也是对应的次数.如果能一次性将所有请求提交给server端,执行完成后批量获取响应,只需向redis请求1次,性能获大幅提升

conn = connect_redis()
    keys = collect_keys()
    pipe = conn.pipeline()
    for k in keys:
        pipe.hmget(k, 'bo', 'so')
    result_data = pipe.execute()

没有用pipeline之前,基本上获取所有数据需要90多s,现在只需0.3s,性能提升清晰可见

APscheduler 注意事项

实现以下场景:定时任务每隔1s执行任务函数,但是任务函数执行完成的时间比1s要长,此时启动定时任务要加上两个参数,否则会报错

import time
from apscheduler.schedulers.blocking import BlockingScheduler


scheduler = BlockingScheduler()
def job1():
    time.sleep(3)
    current_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
    print(current_time)

scheduler.add_job(job1, 'interval', max_instances=10, misfire_grace_time=3600, seconds=1)
scheduler.start()

max_instances

可允许的实例个数,如果没有设置,则默认为1,表示id相同的任务实例数
像上面的例子中,会报skipped: maximum number of running instances reached (1)的错误,意思APScheduler试图重新执行作业,但前一个仍在运行。

misfire_grace_time

这个参数可以理解为任务的超时容错配置,给executor 一个超时时间,这个时间范围内要是该跑的还没跑完,就别再跑了
像上面的例子中,会报Run time of job …… next run at: ……)” was missed by的错误

相关文章

  • 关于redis批量获取数据pipeline

    Redis批量获取数据 Redis是建立在TCP协议上的CS架构,客户端client对redis server采取...

  • redis批量操作

    redis multi pipeline平时使用redis的时候,经常有批量操作的需求;比如批量读取一批数据,或者...

  • Spring的RedisTemplate Pipeline的正确

    redis-pipeline 我们都知道大批量有规律的redis写操作,用pipeline模式能够极大提高效率。在...

  • redis调用lua说明文档

    redis调用lua脚本 在实际开发中,可以通过pipeline将多个命令批量传输给redis执行,减少网络开销;...

  • JAVA使用pipeline批量写Redis数据

    最近遇到一个需求,需要把数据库中的手机号批量写入到数据库,使用了很多的方法都性能不佳或者出现连接池断开的问题,最后...

  • redis之pipeline批量存储

    pipeline是redis批量提交的一种方式,也就是把多个命令操作建立一次连接发给redis去执行,在性能方面会...

  • 我是如何解决redis集群批量获取的效率问题的

    相信各位在使用redis集群的时候,对于redis集群中的批量操作都会有一个现象:使用redis集群进行批量获取数...

  • Redis 批量操作之pipeline

    业务场景 最近项目中场景需要get一批key的value,因为redis的get操作(不单单是get命令)是阻塞的...

  • Redis pipeline以及批量优化

    Request/Response protocol Redis基于Request/Response 协议。通常情况...

  • storm

    离线计算批量获取数据、批量传输数据、周期性批量计算数据、数据展示(报表)代表技术:sqoop批量导入数据、hdfs...

网友评论

      本文标题:关于redis批量获取数据pipeline

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