使用mongodb做任务队列管理支持增删改 ,我是喜欢用redis的list做队列的,但是这边经常堆积任务,需要查看并删除清空队列,有可能会根据一些content的字段来进行删除,有可能是会针对发件人,或者是时间段来删除。  这样redis真的不太适合了,因为redis的队列只能是一个值,当时咱们也可以只是存一个任务id,然后放到redis hash来做,处理的时候,无逻辑,但是查询修改的时候,会发信,逻辑有些复杂,算了,直接用mongodb做吧。   其实选择mongodb做队列的原因很简单,性能可以,在这种场景下查询起来不比mysql差。

import pymongo
import time
connection=pymongo.Connection('localhost',27017)
#库
db = connection.test
#表
posts=db.test
ltime=time.time()
posts.insert({'good':1,'jid':ltime})
posts.find({'jid':ltime})

后端的进程,一直取数据。

posts.find({'jid':ltime}).sort('ltime',pymongo.DESCENDING)

取到任务后,扔给后面的进程来出来。

posts.remove({'jid':ltime})

当然仅此这样肯定是不行的,在任务并发的时候,你还来不及删除的时候,这个任务已经又被别人搞去了 。  这个时候怎么办?  怎么解决控制原子问题。

第一个方法是文件锁的方式,findAndModify  这个函数,查询的时候,删除可以remove或者是update

第二个方法是mq派发的模式,拿出一个后端进程专门取数据,然后派发给别的线程。就这么简单。

下面是我用mongo做队列的效果,仅供参考。。。。

放弃redis使用mongodb做任务队列支持增删改管理相关推荐

  1. 如何基于Restful ABAP Programming模型开发并部署一个支持增删改查的Fiori应用

    Jerry之前的文章30分钟用Restful ABAP Programming模型开发一个支持增删改查的Fiori应用 发布之后,有朋友问我,"没错, 我是在你的文章里看到了Fiori应用的 ...

  2. 30分钟用Restful ABAP Programming模型开发一个支持增删改查的Fiori应用

    2016年时,Jerry曾经写过一系列关于SAP Fiori Smart Template(现在更名为Fiori Elements了)的博客,介绍了所谓的MDD开发方法论 - Metadata Dri ...

  3. 【学习笔记】mongoDB初步(一)MongoDB的安装和增删改查基本语法,使用和命令

    MongoDB适合储存大量关联性不强的数据. MongoDB中的数据以"库"-"集合"-"文档"-"字段"结构进行储 存 ...

  4. MongoDB 文档字段增删改

    MongoDB 基于CRUD(create,read,update,delete)方式实现了对集合上的文档进行增删改查.对于集合上字段的增删改,可以使用set或者unset修改器来实现.也可以使用文档 ...

  5. MongoDB简介及常用增删改查命令

    MongoDB 简介 NoSQL 的概念:指的是非关系型数据库. NOT only sql 的缩写.特别适用于大规模 的数据存储.例如:谷歌或者facebook 每天为用户收集亿万级别的数据,这些数据 ...

  6. java mongodb 增删改查_java操作mongodb:基本的增删改查

    java操作mongodb的代码,包含基本的增删改查操作 获取数据库连接工具类 package com.liuc.db;import java.net.UnknownHostException;imp ...

  7. mongodb学习笔记之增删改查作指令

    1: mongo入门命令 1.1: show dbs  查看当前的数据库 1.2 use databaseName 选库 1.2 show tables/collections 查看当前库下的coll ...

  8. php加数据库开发案例,PHP简单数据库操作类实例【支持增删改查及链式操作】

    本文实例讲述了PHP简单数据库操作类.分享给大家供大家参考,具体如下: 在进行项目开发时,数据库是必不可少的东西了.但是很多时候却又对数据库SQL语句的繁杂而感到头疼.提供一个我自己使用的数据库操作类 ...

  9. 利用Servlet做一套增删改查

    真的,稳住,考上研,利用两年逆袭.一步一步来,实在不行,最后最差也不过就是就回家种地,想想也不错. 前期准备配置 建一个动态web项目 新建Dynamic Web Project File->N ...

最新文章

  1. lsof根据端口查进程
  2. gettype拿不到值_被玩家强行改位置的5个英雄,他上单无解,杀吕布灭铠爹,这都拿去辅助?...
  3. 服务消费和负载(Feign)
  4. jquery之提示信息
  5. 推荐一个ajax控件项目 ajax data control
  6. 视频教程-【深入理解计算机网络】讲师解读计算机网络原理视频课程(中)-计算机网络
  7. 大三实习生,字节跳动面经分享,已拿Offer
  8. 在FL Studio中如何制作白噪音的转场效果
  9. Xcode 历史版本官方下载地址 Xcode6 Xcode7
  10. Swiper的安装及使用
  11. TLD文件自定义标签
  12. ubuntu搭建dns服务器
  13. 【WebFace260M】《WebFace260M:A Benchmark Unveiling the Power of Million-Scale Deep Face Recognition》
  14. JFreeChart饼状图显示百分比
  15. 单片机引脚模式的配置
  16. 直线相交的交点(Line-Line Intersection)
  17. python音乐下载器交互界面设计_用python实现的百度音乐下载器-python-pyqt-改进版...
  18. 分享WIN7输入法图标不显示的几种解决方法
  19. 【LTE】LTE基础知识要点(二)信道物理资源定义(RG/RB/RE/REG)
  20. PAT 乙级 1035  插入与归并

热门文章

  1. 微信支付,银联支付,支付宝支付——三大支付总结
  2. 关于juniper配速小记
  3. 机器学习与R语言(原书第2版)》一1.4 实践中的机器学习
  4. [实战] 用数人云,部署弹性 ELK 集群就五步 1
  5. 解决 QtCreator 3.5(4.0)无法输入中文的问题
  6. Android开发,使用背景图(xml drawable)为view 设置边框
  7. 流程企业(钢铁企业)的制造执行系统
  8. Redis之渐进式rehash
  9. 某级数的前两项A1=1,A2=1,以后各项具有如下关系:An=An-2+2An-1。使用非递归的算法求解满足要求的n值的程序。
  10. go的一个不太理解的赋值问题