DB,Cache和Redis应用场景分析
最近做一产品,微博方面的。数据存储同时用到了DB(mysql),Cache(memcache),Redis。其实最开始架构设计的时候是准备用MongoDB的,由于学习成本太高,
最终选择放弃了,采用了比较保守的方案。这款微博产品做了将近一年,涵盖了手机客户端(ios,android),web(刚上线不久),现在差不多有10多W用户,光
DB的写操作也到了几十W每日,前段时间刚刚做了一个读写分离。目前感觉这套系统还比较稳定。下文主要就微博产品的一些数据存储的应用场景做个简要介绍。
DB
DB主要用来存储一些不经常修改的数据,比如微博,评论,好友关系,用户信息,和一些微博分类。这里边联表查询比较多,虽然有些地方做了一些视
图。由于业务比较复杂,还是有不少地方超过了3个表的联表查询。随着数据量的逐步增加,下一步要考虑分库分表了。
Cache
主要对经常使用的数据做了缓存,比如新发的微博,第一页评论,登录的用户信息,微博分类。目前主要做了细粒度的缓存,下一步针对业务级做一些缓
存。
Redis
主要用来做计数器,比如发帖数,评论数,阅读数之类的,比较合适存储经常改变而又需要永久存储的数据,这也是和cache的区别。另外对登录后的好
友关系做了一个redis备份。Redis还做了一些临时存储的数据,比如今日最热微博,本周最热微博ID列表。
这三个组件相辅相成。其实DB放了一些需要永久存储,而不经常修改的数据。Cache针对单表和业务层分别做了一些细粗粒度的缓存。Redis主要放了一些
不太紧要的而又经常改变的数据。
DB,Cache和Redis应用场景分析的更多相关文章
- Redis应用场景-转载
1. MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的 ...
- <转>Redis 应用场景
http://blog.csdn.net/hguisu/article/details/8836819 1. MySql+Memcached 架构的问题 Memcached采用客户端-服务器的架构, ...
- Redis应用场景-整理
1. MySql+Memcached架构的问题 Memcached采用客户端-服务器的架构,客户端和服务器端的通讯使用自定义的协议标准,只要满足协议格式要求,客户端Library可以用任何语言实现. ...
- NoSQL数据库:Redis适用场景及产品定位
传统MySQL+ Memcached架构遇到的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量 ...
- 再谈Redis应用场景(转)
原文:在谈Redis应用场景 一.MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样 ...
- Redis源码分析:serverCron - redis源码笔记
[redis源码分析]http://blog.csdn.net/column/details/redis-source.html Redis源代码重要目录 dict.c:也是很重要的两个文件,主要 ...
- 详解 Redis 应用场景及原理
本文转自https://blog.csdn.net/niucsd/article/details/50966733,描述了redis实现原理和应用场景,篇幅较长,有意学习redis的同学可耐心阅读. ...
- Redis时延问题分析及应对
Redis时延问题分析及应对 Redis的事件循环在一个线程中处理,作为一个单线程程序,重要的是要保证事件处理的时延短,这样,事件循环中的后续任务才不会阻塞: 当redis的数据量达到一定级别后(比如 ...
- Redis应用场景说明与部署
Redis简介 REmote DIctionary Server(Redis)是一个基于key-value键值对的持久化数据库存储系统.redis和大名鼎鼎的memcached缓存服务很像,但是red ...
随机推荐
- 网页中Javascript获取时间
<script language="javascript"> <!-- function initArray() { for(i=0;i<initArray ...
- C#多线程学习 之 线程池[ThreadPool](转)
在多线程的程序中,经常会出现两种情况: 一种情况: 应用程序中,线程把大部分的时间花费在等待状态,等待某个事件发生,然后才能给予响应 这一般使用ThreadPo ...
- cad2013
## ribbon界面? ribbon界面是一种设计ui, 可以认为是传统的 菜单和工具栏 组合. 是 用于 实时显示 + 面向结果的 设计ui 但并不是所有的程序都适合. ribbon 并不是 ...
- javascript模板插件amaze.js
摘要: 最近在开发项目时,异步接口需要前端渲染数据,js拼接太低级,必然要用模板插件.之前用过基于jQuery的和juicer等插件,考虑到以后公司项目上的统一,移动端和pc端上的统一,以及可维护性, ...
- centos linux从无到有安装wordpress
序:本博客从无到有搭建wordpress,包括从服务器和域名购买,会将步骤一步一步记录下来.如果你也是新手,那你有福了,因为我的系统是centos,对号入座啊. 目录 一.准备域名和服务器一.安装ph ...
- <转>键盘扫描码
原文链接:http://www.cnblogs.com/wqw/archive/2009/08/30/1556618.html //以下是一个检测按键扫描码的程序 #i nclude <bios ...
- Python文件基础
===========Python文件基础========= 写,先写在了IO buffer了,所以要及时保存 关闭.关闭会自动保存. file.close() 读取全部文件内容用read,读取一行用 ...
- [转]结合轮廓显示,实现完整的框选目标(附Demo代码)
原地址:http://www.cnblogs.com/88999660/articles/2887078.html 几次看见有人问框选物体的做法,之前斑竹也介绍过,用画的框生成的视椎,用经典图形学的视 ...
- MFC加载皮肤 转自:http://www.cctry.com/thread-4032-1-1.html
VC皮肤库SkinSharp 1.0.6.6的使用: SkinSharp又称Skin#,是Windows环境下一款强大的换肤组件.SkinSharp作为换肤控件,只需要在您的程序中添加一行代码,就能让 ...
- MVC NonAction属性
3.1. NonAction属性 若将NonAction属性应用在Controller中的Action方法上,即使该Action方法是公共方法,也会告知ActionInvoker不要选取这个Actio ...