放弃redis使用mongodb做任务队列支持增删改管理
使用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做任务队列支持增删改管理相关推荐
- 如何基于Restful ABAP Programming模型开发并部署一个支持增删改查的Fiori应用
Jerry之前的文章30分钟用Restful ABAP Programming模型开发一个支持增删改查的Fiori应用 发布之后,有朋友问我,"没错, 我是在你的文章里看到了Fiori应用的 ...
- 30分钟用Restful ABAP Programming模型开发一个支持增删改查的Fiori应用
2016年时,Jerry曾经写过一系列关于SAP Fiori Smart Template(现在更名为Fiori Elements了)的博客,介绍了所谓的MDD开发方法论 - Metadata Dri ...
- 【学习笔记】mongoDB初步(一)MongoDB的安装和增删改查基本语法,使用和命令
MongoDB适合储存大量关联性不强的数据. MongoDB中的数据以"库"-"集合"-"文档"-"字段"结构进行储 存 ...
- MongoDB 文档字段增删改
MongoDB 基于CRUD(create,read,update,delete)方式实现了对集合上的文档进行增删改查.对于集合上字段的增删改,可以使用set或者unset修改器来实现.也可以使用文档 ...
- MongoDB简介及常用增删改查命令
MongoDB 简介 NoSQL 的概念:指的是非关系型数据库. NOT only sql 的缩写.特别适用于大规模 的数据存储.例如:谷歌或者facebook 每天为用户收集亿万级别的数据,这些数据 ...
- java mongodb 增删改查_java操作mongodb:基本的增删改查
java操作mongodb的代码,包含基本的增删改查操作 获取数据库连接工具类 package com.liuc.db;import java.net.UnknownHostException;imp ...
- mongodb学习笔记之增删改查作指令
1: mongo入门命令 1.1: show dbs 查看当前的数据库 1.2 use databaseName 选库 1.2 show tables/collections 查看当前库下的coll ...
- php加数据库开发案例,PHP简单数据库操作类实例【支持增删改查及链式操作】
本文实例讲述了PHP简单数据库操作类.分享给大家供大家参考,具体如下: 在进行项目开发时,数据库是必不可少的东西了.但是很多时候却又对数据库SQL语句的繁杂而感到头疼.提供一个我自己使用的数据库操作类 ...
- 利用Servlet做一套增删改查
真的,稳住,考上研,利用两年逆袭.一步一步来,实在不行,最后最差也不过就是就回家种地,想想也不错. 前期准备配置 建一个动态web项目 新建Dynamic Web Project File->N ...
最新文章
- lsof根据端口查进程
- gettype拿不到值_被玩家强行改位置的5个英雄,他上单无解,杀吕布灭铠爹,这都拿去辅助?...
- 服务消费和负载(Feign)
- jquery之提示信息
- 推荐一个ajax控件项目 ajax data control
- 视频教程-【深入理解计算机网络】讲师解读计算机网络原理视频课程(中)-计算机网络
- 大三实习生,字节跳动面经分享,已拿Offer
- 在FL Studio中如何制作白噪音的转场效果
- Xcode 历史版本官方下载地址 Xcode6 Xcode7
- Swiper的安装及使用
- TLD文件自定义标签
- ubuntu搭建dns服务器
- 【WebFace260M】《WebFace260M:A Benchmark Unveiling the Power of Million-Scale Deep Face Recognition》
- JFreeChart饼状图显示百分比
- 单片机引脚模式的配置
- 直线相交的交点(Line-Line Intersection)
- python音乐下载器交互界面设计_用python实现的百度音乐下载器-python-pyqt-改进版...
- 分享WIN7输入法图标不显示的几种解决方法
- 【LTE】LTE基础知识要点(二)信道物理资源定义(RG/RB/RE/REG)
- PAT 乙级 1035 插入与归并
热门文章
- 微信支付,银联支付,支付宝支付——三大支付总结
- 关于juniper配速小记
- 机器学习与R语言(原书第2版)》一1.4 实践中的机器学习
- [实战] 用数人云,部署弹性 ELK 集群就五步 1
- 解决 QtCreator 3.5(4.0)无法输入中文的问题
- Android开发,使用背景图(xml drawable)为view 设置边框
- 流程企业(钢铁企业)的制造执行系统
- Redis之渐进式rehash
- 某级数的前两项A1=1,A2=1,以后各项具有如下关系:An=An-2+2An-1。使用非递归的算法求解满足要求的n值的程序。
- go的一个不太理解的赋值问题