基于Redis先驱开发的存储有aerospike,vedis,ssdb,解决了多语言多线程分布式环境下快速存储问题,比mysql传统数据库要快,有的和redis协议兼容,方便更换存储引擎。
分类一:键值数据库Redis,
Voldemort,
Oracle
BDB,国内的ssdb
分类二:列存储数据库
Cassandra,
HBase
分类三:文档型数据库
CouchDB,
MongoDb,国内的SequoiaDB
分类四:图形(Graph)数据库
Neo4J,
InfoGrid,
Infinite
Graph
结论:Redis 不能当数据用。
原因:我们理解的数据库,无论是 SQL、NoSQL、NewSQL,至少要是读写一致的。也就是说如果客户端发起一个写请求,如果服务器回复了成功,就算是之后服务器异常重启了,这个数据一样是能被读到的。
而 Redis 不是读写一致的。
答案里有人提到说 Redis 也会持久化,但是就算是 AOF,也是给客户端应答后,再定时写磁盘的,都是不一致的。
这里还没讨论磁盘损坏的问题。
有几个基于持久化存储的、兼容 Redis 协议的系统可以当作数据库使用,比如 SSDB、ARDB、Pika 等。但是据我所知,这些项目现在都不支持集群,没办法动态扩容。
另外,还有一个很麻烦的问题,就是刚才提到的 磁盘损坏问题,如果数据只存放在一个单点,一旦有磁盘损坏,就会造成数据丢失,所以,即使是同步持久化的但是没有集群备份数据的系统,用作数据库也是有很大风险的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)