BeWithYou

胡搞的技术博客

运维/工具

mongodb如何随机取出若干条文档


最近在重构德州机器人的服务,原本的机器人列表写在json文件中,每次进程读取文件后放在内存中。这样并不灵活,并且缺乏实时性。这次重构将其放入mongo中,每隔若干时间从服务端PHP全量拉取数据并更新mongo,比如更新机器人的金钱余额等。同时还可以根据程序内实际派遣情况,同步更新mongo中机器人的状态。 遇到一个问题,如何从若干条符合条件的document中选择几条? mongo中的find方法和findOne方法取出……
运维/工具

mongoDB时间timezone问题


之前有个工具性质的内部系统,为了尝尝鲜,我选择了用mongo作为数据库。中间踩过不少坑,后来整理了一个PPT做了次内部分享。结果就没几个人来听…… 尴尬 今天发现了个有关时间的问题,记录一下。 之前我们记录时间用的是unix时间戳,后来想用按日期分组的功能,发现比较困难。因为mongo里关于日期的分组函数都是基于ISODate型数据的。看起来是这样的: db.getCollection(……
运维/工具

有关TRUNCATE不能事务回滚


今天做一个从文本全量导入数据库的功能,每次全量更新表里的数据。想法是在事务里先truncate掉表格,然后批量insert进去,出错则rollback,全部insert成功则commit。 然而发现一个问题,truncate以后即使回滚了也不能回到最初的状态。查了一下,truncate属于DDL语句,执行的时候是隐含着自动commit的,所以并不能在事务里使用。 简要记一下MySQL中数据语言的概念: 数据查询语……
运维/工具

awk扫描分析nginx访问日志


年底感觉没啥活干,尤其是在年底跳槽到新公司,更是没什么重要的项目可以做。老大布置任务,要做一个平台统计每个站点后台的nginx日志,针对url维度分析访问量,加载时间等。 当时设想是这样的,扫描任务部署在线上nginx机器上,定时执行。用shell脚本分析日志,然后找一台开发虚拟机部署管理后台,从shell脚本curl给php接口上报统计结果。 设想的挺好,但是等shell脚本写完以后放到……
运维/工具

awk常用备忘


使用方法: awk [-F re] 'pattern + {action}' xxx.txt 以下均省略文件输入 用-F指定分隔符: awk -F ';' '{print $1}' 工作流,BEGIN和END: awk 'BEGIN {print "name,sex"} {print $1","$2} END {print "me,male"}' 先执行BEGIN 然后读取输入一次执行中间的{} 最后执行END 正则pattern: awk '/hug……
运维/工具

crontab部署遇到的一个坑


同事部署定时器的时候遇到一个问题。任务执行的时间与设想的不一样。 需求如下:一个任务需要每8小时执行一次,按照网上大部分说法,应该这么写时间格式: * */8 * * * /bin/sh xxx.sh 2>&1 其实不对啊!!! 上面这种写法要表达的意思实际上是“每隔8小时,每分钟跑一次”。这样的话实际上任务运行的时间依次为:   ……
回到顶部