# 简介 Redis是一个开源的key-value存储系统,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。为了保证效率,数据都是缓存在内存中。Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。并且在此基础上实现了master-slave(主从)同步。通过破坏一定的业务逻辑来换取性能。 Redis默认16个数据库,默认为0库,所有库同样的密码。Redis 使用的单线程+多路IO复制技术。 # NoSQL数据库概述 NoSQL(NoSQL = Not Only SQL ),指非关系型的数据库。NoSQL不依赖业务逻辑方式存储,而以简单的key-value模式存储。因此大大的增加了数据库的扩展能力。 - 不遵循SQL标准 - 不支持ACID。 - 远超于SQL的性能。 ## NoSQL适用场景 - 对数据高并发的读写 - 海量数据的读写 - 对数据高可扩展性的 ## NoSQL不适用场景 - 需要事务支持 - 基于sql的结构化查询存储,处理复杂的关系。 ## NoSQL产品介绍 **Memcache:** - 很早出现的NoSQL数据库 - 数据都在内存中,一般不持久化 - 支持简单的key-value模式,支持类型单一 - 一般是作为缓存数据库辅助持久化的数据库 **Redis:** - 几乎覆盖了Memcached的绝大部分功能 - 数据都在内存中,支持持久化,主要用作备份恢复 - 除了支持简单的key-value模式,还支持多种数据结构的存储,比如 list、set、hash、zset等。 - 一般是作为缓存数据库辅助持久化的数据库 **MongoDB:** - 高性能、开源、模式自由(schema free)的**文档型数据库** - 数据都在内存中, 如果内存不足,把不常用的数据保存到硬盘 - 虽然是key-value模式,但是对value(尤其是**json**)提供了丰富的查询功能 - 支持二进制数据及大型对象 - 可以根据数据的特点**替代RDBMS**(关系型数据库) ,成为独立的数据库。或者配合RDBMS,存储特定的数据