概述

Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案。

Redis从它的许多竞争继承来的三个主要特点:

Redis数据库完全在内存中,使用磁盘仅用于持久性。

相比许多键值数据存储,Redis拥有一套较为丰富的数据类型。

Redis可以将数据复制到任意数量的从服务器。

Redis 优势

异常快速:Redis的速度非常快,每秒能执行约11万集合,每秒约81000+条记录。

支持丰富的数据类型:Redis支持最大多数开发人员已经知道像列表,集合,有序集合,散列数据类型。这使得它非常容易解决各种各样的问题,因为我们知道哪些问题是可以处理通过它的数据类型更好。

操作都是原子性:所有Redis操作是原子的,这保证了如果两个客户端同时访问的Redis服务器将获得更新后的值。

多功能实用工具:Redis是一个多实用的工具,可以在多个用例如缓存,消息,队列使用(Redis原生支持发布/订阅),任何短暂的数据,应用程序,如Web应用程序会话,网页命中计数等。

步入主题:

Redis作为内存数据库的一个典型代表,已经在很多应用场景中被使用,这里仅就Redis的pub/sub功能来说说怎样通过此功能来实现一个简单的作业调度系统。这里只是想展现一个简单的想法,所以还是有很多需要考虑的东西没有包括在这个例子中,比如错误处理,持久化等。

下面是实现上的想法

MyMaster:集群的master节点程序,负责产生作业,派发作业和获取执行结果。

MySlave:集群的计算节点程序,每个计算节点一个,负责获取作业并运行,并将结果发送会master节点。

channel CHANNEL_DISPATCH:每个slave节点订阅一个channel,比如“CHANNEL_DISPATCH_[idx或机器名]”,master会向此channel中publish被dispatch的作业。

channel CHANNEL_RESULT:用来保存作业结果的channel,master和slave共享此channel,master订阅此channel来获取作业运行结果,每个slave负责将作业执行结果发布到此channel中。

Master代码

说明

MyMaster类 - master主程序,用来启动dispatch和resulthandler的线程

MyServerDispatchThread类 - 派发作业线程,产生作业并派发到计算节点

MyServerResultHandleThread类 - 作业运行结果处理线程,从channel里获取作业结果并显示

Slave代码

说明

MySlave类 - slave节点主程序,用来启动MyJobWorkerThread的线程

MyJobWorkerThread类 - 从channel里获取派发的作业并将运行结果发送回master

测试

首先运行MySlave来定义派发作业channel。

然后运行MyMaster派发作业并显示执行结果。

有关Python使用Redis实现作业调度系统(超简单),小编就给大家介绍这么多,希望对大家有所帮助!

python使用redis在实际场景使用_Python使用Redis实现作业调度系统(超简单)相关推荐

  1. redis watch使用场景_详解redis中的锁以及使用场景

    分布式锁 什么是分布式锁? 分布式锁是控制分布式系统之间同步访问共享资源的一种方式. 为什么要使用分布式锁? ​ 为了保证共享资源的数据一致性. 什么场景下使用分布式锁? ​ 数据重要且要保证一致性 ...

  2. python读取redis存储数据的存储时间_Python读写Redis数据库操作示例

    使用Python如何操作Redis呢?下面用实例来说明用Python读写Redis数据库. 比如,我们插入一条数据,如下: import redis class Database: def __ini ...

  3. python 3.7.732位安装步骤_python安装教程(Windows系统,python3.7为例)

    1. 在python的官网下载python对应版本:https://www.python.org/downloads/windows/ 64位下载Windows x86-64 executable i ...

  4. 项目1在线交流平台-4. 使用radis高性能储存方案-5.redis常用使用场景-开发关注功能-redis事务

    文章目录 功能需求 1. dao层设计redis对应的key 设计储存关注对象信息的健值对 key value 设计储存粉丝信息的健值对 key value 2. Service层处理关注和取关的业务 ...

  5. python可以做二维码吗_Python制作二维码真的这么简单?

    今天在最大的交友社区GitHub上发现了一个比较有意思的项目,无论你是什么操作系统,只需要一行代码就可以很方便的生成二维码.包括普通二维码.艺术二维码(黑白/彩色).动态gif二维码都可以制作,用法比 ...

  6. python打开已有docx文档_python读取docx文件,就是如此简单

    中文编码问题总是让人头疼(尤其是mac本),想要用 Python读取word中的内容.用open()经常报错,通过百度搜索+问身边小伙伴发现了 Python有专门读取.docx的模块python_do ...

  7. python可以制作回合制游戏么_Python制作回合制手游外挂简单教程(上)

    正文 引入: 每次玩回合制游戏的时候,反反复复的日常任务让人不胜其烦 玩问道的时候,我们希望能够自动刷道,玩梦幻希望能自动做师门.捉鬼等等 说明: 该外挂只能模拟鼠标键盘操作,并不能修改游戏数据 我这 ...

  8. python编程超市购物系统_python 自动购物系统 超简单源码(入门级)

    [实例简介] 用户管理购物系统 [实例截图] [核心代码] choice = input("""请输入你需要的业务: 1).购买商品: 2).管理员查询 输入:" ...

  9. python输入表达式并计算_python的一个表达式的计算(超简单)

    原博文 2016-12-14 13:11 − 运行的过程如下:输入计算表达式:3+5计算结果:8然后再次显示计算表达式,等待输入完成后,再次显示结果,依此循环. 作为初学者再适合不过,代码也简单,如下 ...

最新文章

  1. 类加载器双亲委派模式
  2. 百度股价一跌再跌,网友叹息:李彦宏没有狼性,缺乏战略眼光?
  3. 支持向量机python代码_用TensorFlow实现多类支持向量机的示例代码
  4. Docker的网络模式和跨主机通信
  5. 实现Android-JNI本地C++调试
  6. 按键精灵调用迅雷下载文件
  7. vue获取浏览器地址栏参数(?及/)路由+非路由实现方式
  8. 《深入体验 飞鸽传书 开发内幕 核心基础》
  9. 哪有什么岁月静好,不过是有人替你负重前行
  10. 为什么我们拒绝使用 Docker
  11. 如何编写高质量的代码二 - 类的设计
  12. 苹方字体 android,iOS 9“苹方”字体像安卓被吐槽
  13. SAI2 安装及导入笔刷素材
  14. Android系统各个版本发布时间
  15. 塔塔露也能学会的算法(1) | dijkstra从入门到放弃
  16. win10 c++调用pytorch模型
  17. BP神经网络需要训练的参数,bp神经网络训练时间
  18. web前端与后台数据交互
  19. 穷游女生说:在川藏线上搭车,可以看清男人的本质
  20. soap方式调用webservice接口

热门文章

  1. Yii的Querybuild ActiveRecord
  2. pandas对每十行做批量操作_pandas批量处理数据
  3. JS正则表达式校验金额
  4. rs485编程java_串行编程RS485
  5. java f反射_java反射机制
  6. foreach循环怎么获取全部返回值_JavaScript中For循环的3种版本和使用场景
  7. MySQL深入(一)
  8. java遍历文件目录
  9. python 去空_Python 内存分配时的小秘密
  10. mysql stop很久_mysql的timeout