redis和MySQL区别(转载)

部分内容转载于点击打开链接

redis是一个内存数据结构的服务,它将数据存储在内存中,从而实现了非常好的吞吐量和性能。它有提供了很丰富的数据结构,特别适合社交类业务的系统。但是内存数据库要求服务器的内存足够才行,存储的数据量越大消耗的内存也就越大,如果内存不够就会导致操作系统进行内存到磁盘的交换结构性能急剧下降。新浪微博的数据存储就是用的redis来实现的。

mysql是一个传统的数据库系统,因为它的架构非常的灵活,可以集成很多不同方式的存储。mysql因为大部分都是磁盘操作自然性能比不上redis,但是支持事务等功能。适合于各种业务系统,对于海量的数据存储并没有问题。Facebook用的是MySQL的集群。

数据量有多大,业务是什么样,不能一概而论。用的好一样可以解决大部分的问题,新浪微博的冷数据就是用MySQL。

大体而言,Redis 最适合处理的是小而热,而且是写频繁,或者读写都比较频繁的热数据。对于大而热的数据,如果其它方式很难解决问题,也可以考虑使用 Redis 解决,但是一定要非常谨慎,防止数据无限膨胀。原因如下:

首先,对于冷数据,无论大小,都不建议放在 Redis 中。Redis 数据要全部放在内存中,资源宝贵,把冷数据放在其中实在是一种浪费,冷数据放在普通的存储比如关系数据库中就好了。

其次,对于热数据,尤其是写频繁的热数据,如果量比较小,是最适合放到 Redis 中的。比如上面提到的网站总的注册用户数,就是典型的 Redis 用做计数器的例子。再比如论坛最新发表列表,最新报名列表,可以控制数量在几百到一千的规模,也是典型的 redis 做最新列表的使用方式。

另外,对于量比较大的热数据(或者冷热不均数据),使用 Redis 时一定要比较谨慎。这种类型数据很容易引起数据膨胀,导致 Redis 消耗内存巨大,让系统难以承受。薄荷的一个惨痛教训是把用户关注(以及被关注)数据放在 Redis 中,这是一种数据量极大,冷热很不均衡的数据,在几百万的用户级别就占用了近 10 GB左右内存,让 Redis 变得难以应付。应对这种类型的数据,可以用普通存储 + 缓存的方式。

如果用对了地方,比如在小而热的数据情形,Redis 表现很棒,如果用错了地方,Redis 也会带来昂贵的代价,所以使用时务必谨慎。



阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页