基于redis构建系统的经验和教训

Redis是一个很是快速和强大的存储(持久化)系统,它最大的特色是支持丰富的数据结构。redis

因为Redis自己的限制,它所能处理的数据必须彻底放在内存中,而硬盘上的数据是内存数据的一个镜像,因此限制了它的容量不能超过内存的容量。当前服务器内存以32G为广泛状况,若是一个系统要存储1T的数据,那么必须用上10台服务器,硬件成本很是高。对于一个100万活跃用户的系统,平均每人天天产生1K数据,便须要1G的存储空间,这仅至关于每一个用户天天只发10条微博或者10条聊天信息,真正流行的系统将远远超过这个数据规模。服务器

通常数据达到几百M或者1G时,redis必须且只能开启aof操做日志异步写硬盘的持久化模式,因为用户记录数据变动日志的aof文件体积增长比较严重,必须按期对aof文件进行收缩(rewrite)。收缩的过程实际上是将内存数据镜像到硬盘的过程,redis主进程须要fork一个进程出来,虽然操做系统有写时拷贝功能,但仍然要为fork出来的进程保留足够的内存空间,因此redis只能使用内存容量的50%。在写aof文件时,redis彻底没有任何速度控制策略,常常致使硬盘读写占满,其它进程一旦涉及到文件操做,都将被阻塞住。网络

redis自身支持主从模式,能够方便的进行数据备份,避免单点失败形成数据丢失,可是当网络出现抖动时,能够致使主从之间发生一次全量复制,这对网络带宽是一个打击。redis是一个单机的存储方案,当数据超过单台服务器的内存容量时,必须由软件的设计者在软件逻辑层设计出一套数据拆分的方案。
数据结构

结论:异步

redis不适合做为海量数据存储方案。redis适合在数据规模较小,性能要求较高的条件下应用。性能

相关文章
相关标签/搜索