存储这块,各有专长:
关系代数的RDB,发展了很多年,很多成熟的产品和技术;K-V的redis,现在到了3.x,支持lua脚本、订阅、集群等;图形的neo4j,还有支持分布式的titan;文档数据库mongodb,换装wt引擎后更强劲;
还有hbase、cassandra等列式数据库,在大数据方向蛮火;最后,别忘了文件系统,nfs、fastdfs、gridfs等,好多东东,整吧,你已经上了贼船。
来张redis的图:
其实redis的核心就是内存存储、以及大量应用了map这种数据结构,虽说达不到O(1),但内存会肯快,相比网络IO;
数据结构方面,相比memcache丰富得多,链表、rehash的Map、集合、还有压缩列表,好处是现在内存更便宜 了;
对外功能方面,支持RDB、AOF日志持久化,注意redis的日志不保证事务;主从复制,感觉类似mysql的binlog复制;哨兵sentinel,那个选举就是paxos的简化版;还支持无中心集群,据说用twemproxy的不少也;发布订阅、lua脚本, 功能很全的说;
有一点得强调,有说redis支持事务,但你muti的命令,执行出错也不会回滚,日志也不一定是及时写入,个人感觉没必要当RDB来看;
最后,redis支持watch,乐观并发那种锁,其实redis、mongodb虽然不严格支持RDB那种事务,但是也提供一些原子性的操作,别说你没用过。
详见redis设计与实现。