NOSQL的应用,Redis/Mongo

1.心路历程

上年11月份来公司了,和另外一个同事一起,做了公司一个移动项目的微信公众号,然后为了推广微信公众号,策划那边需要我们做一些活动,包括抽奖,投票。最开始是没有用过redis的,公司因为考虑到参与人数的问题,给我们配了两台redis服务器,一台windows的(负责本地测试),一台linux的(负责线上版本),接下来说说途中遇到的坑,和最后的解决方法

2.坑之一,存List的瓶颈问题

linux版本redis服务器是16G的内存,因为第一次使用redis,并不知道去做压力测试,不知道瓶颈在哪,然后redis又被网上的人过度神话,以为只要内存不用完,就不会有瓶颈,取数据都是秒取,存数据都是秒存。上线两天,投票明细的key里的list集合超过10W(LIST里面存了投票时间,投票对象ID,主键ID,投票人ID),读取速度出现断崖式的跌落,从毫秒级变成3秒左右,数据量达到15W后,5秒左右。然后客服就来电话了,说用户说投票太慢了,点一下好久才提示成功,一直转。(他么的,我也是第一次,鬼知道redis会这样),我试着取了下另外一个key的数据(5W左右),发现还是毫秒级,证明key之间没有影响,所以当时的想到的解决方案就是,老子分key,差不多就是name_1,name_2,然后另外放个key存当前key的增量,到5W数据就分key,临时解决投票慢的问题。

总结一下,应该不是条数的问题,和List的长度有关,所以,不要把redis当关系型数据库使用,能分key就分key,然后做好瓶颈测试(现在必做的事之一)。

3.坑之二,redis的update功能

有没有大佬告诉我下,redis能不能Update..不是先取后改再删最后增加的那种。。可以直接用的那种。。。可能是我找的帮助类有问题,反正一直没找到可以直接update的方法。

因为这个问题,和redis本身不能建索引的问题,公司决定弄一台mongodb的服务器(16G)。

接下来说的是公司的另外一个需求,就是app要集成im功能,就是QQ聊天的那种,这就存在一个问题了,推送问题,这个太复杂,所以我们决定用第三方,我就不说名字了,免得有打广告的嫌疑。但是,另外一个问题出现了,好多功能他都收费,而且还不便宜,按我们的需求来开通收费业务,最低估计要每月花3000+,老大一拍板,说,就用它的推送功能和消息的发送功能,其他不用,这2个功能是免费的。(我的心情是何等的卧槽),因为公司产品是3端在跑(内部PC端,内部移动端,客户移动端),IM功能我负责提供接口给移动端,还有PCWEB端的聊天功能,所以考虑到用什么,Mongo弄进来用了一段时间(另外的同事弄了转盘抽奖活动,就是用的mongo),用redis肯定是不行的,因为要存聊天记录(妈的,你们自己说QQ是不是很不安全,啥都存着),存好友关系,存身份信息,所以不能直接用redis来搞,决定用Mongo,因为Mongo支持索引,问题来了,mongo如果用string类型做索引,效率也是不高的,不用的话,关系怎么办(各大用户表的主键都是guid),最后想到的解决方案是,用mongo的objectid做索引,redis用hash存objectid和主键Guid之间的对应关系,瓶颈测试一下,发现30W用户(只测试了这么多,瓶颈是多少我也不知道,有瓶颈了再说吧,内部员工只有7000多人,外部看下了下用户表,才20来W,活跃的才1W不到),存取没有任何延迟的感觉,通过!

4.总结

现在对redis的应用基本就是队列,缓存,做索引关系,mongo针对线上活动的数据存取,新功能开发一般也都用Mongo做数据库,后续同步到sqlserver。

大致都是这样,现在线上redis服务器变成了2台(负载)(新功能,自动打电话的功能),mongo变成了2台,做读写分离。总体来说,用到的项目都很稳定的在运行,暂时没有发现什么问题

NOSQL的应用,Redis/Mongo的更多相关文章

  1. 第一篇 Nosql讲解之Redis,Memchche,MongoDb的区别

    本篇文章主要介绍Nosql的一些东西,以及Nosql中比较火的三个数据库Redis.Memchache.MongoDb和他们之间的区别.以下是本文章的阅读目录 一.Nosql介绍 1.Nosql简介 ...

  2. NOSQL数据库之 REDIS

    NOSQL数据库之 REDIS 一.NOSQL 1.简介 NoSQL ,(Not Only SQL),泛指非关系型数据库. 特点: NoSQL 通常是以key-value形式存储, 不支持SQL语句, ...

  3. 谈一谈NOSQL的应用,Redis/Mongo

    1.心路历程 上年11月份来公司了,和另外一个同事一起,做了公司一个移动项目的微信公众号,然后为了推广微信公众号,策划那边需要我们做一些活动,包括抽奖,投票.最开始是没有用过redis的,公司因为考虑 ...

  4. Python操作nosql数据库之redis

    一.NoSQL的操作 NoSQL,泛指非关系型的数据库.随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不 ...

  5. NOSQL之【redis的安全策略】

    原文:http://redis.io/topics/security 1.Redis的安全模式 可信环境下的可信用户才可访问redis.这意味着,将redis服务器直接暴露在Internet或者不可信 ...

  6. NoSQL数据库:Redis适用场景及产品定位

    传统MySQL+ Memcached架构遇到的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量 ...

  7. NoSQL数据库之Redis数据库:Redis的介绍与安装部署

     NoSQL(NoSQL = Not Only SQL),它指的是非关系型的数据库.随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的w ...

  8. NOSQL中的redis缓存数据库

    NOSQL概述 什么是NOSQL? NoSql(NoSQL=Not Only SQL),意思为"不仅仅是SQL",是一个全新的数据库理念,泛指非关系型的数据库. 为什么需要NOSQ ...

  9. 安装 rbbitMQ redis mongo的三个扩展

    #!/bin/bash###install redis extend #########cd /usr/local/srctar fxvz redis-2.2.7.tgzcd redis-2.2.7/ ...

随机推荐

  1. C语言数据类型

    1.概述 C 语言包含的数据类型如下图所示: 2.各种数据类型介绍 2.1整型 整形包括短整型.整形和长整形. 2.1.1短整形 short a=1; 2.1.2整形 一般占4个字节(32位),最高位 ...

  2. Bootstrap 小技巧以及相关资源整理

    1, Bootstrap Bundle (http://bootstrapbundle.com/): 提供了15中不同的MVC  Bootstrap模板.[扩展和更新]中搜索“Bootstrap Bu ...

  3. JS辨别浏览器系统IOS或安卓

    详细内容请点击 /* * 智能机浏览器版本信息: * */ (function($,window,document){     $.extend({         browser:{         ...

  4. postfix部署多个Content Filter的方法

    Postfix邮件服务器可以在接收邮件时使用content_filter来扫描邮件(病毒,广告等).通过整合一个集中化的电子邮件内容过滤器,比如amavis或mailscanner,Postfix可以 ...

  5. [Android开发系列]IT博客应用V1.3

    首先,感谢使用这款软件并给我意见的朋友们,有你们的意见,才有了这个版本. 其次,检索功能和分类筛选功能(如果是你提的意见,记得在下面mark哦,毕竟读代码你能发现,其实发意见这个就是用自己的邮箱给自己 ...

  6. Cocos2d-x 3.x的Windows Phone 8工程

    Cocos2d-x 3.x中我们使用的Cocos2d-x 3.2,它提供了Windows Phone 8平台的支持.下面我们介绍一下在Cocos2d-x 3.2中如何生成Cocos2d-x的Windo ...

  7. 20141031--SQL分组,数学函数,聚合函数

    /* 通过代码操作:创建一个数据库,里面有一个学生信息表, 内容包括:学号,姓名,性别,体重,年龄,语数外三门课分数,班级 插入20条数据 执行以下查询操作: 1.查姓王的同学的信息 2.分别查每门课 ...

  8. Ajax_2

    <script> var xmlHttp;//创建一个对象 function queryDetail(id){ if(window.ActiveXObject){ xmlHttp = ne ...

  9. LLVM language 参考手册(译)(4)

    函数(Functions) LLVM函数定义由“define” 关键字,一个可选的链接标识,一个可选的可见性模式,一个可选的DLL存储类别,一个可选的调用约定,一个可选的 unnamed_addr 属 ...

  10. 博客转移到 海胖网 http://haipz.com/ 希望你能支持我们!

    博客转移到 海胖网 http://haipz.com/ 希望你能支持我们! 博客转移到 海胖网 http://haipz.com/ 希望你能支持我们! 博客转移到 海胖网 http://haipz.c ...