一、什么是redis?
redis是一个开源,内存存储的数据结构服务器,可用作数据库,是一个key-value存储系统, 高速缓存和消息队列代理,它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型 。
redis的优点:
1.支持多种数据结构,如 string(字符串)、 list(双向链表)、dict(hash表)、set(集合)、zset(排序set)、hyperloglog(基数估算)
2.支持持久化操作,可以进行aof及rdb数据持久化到磁盘,从而进行数据备份或数据恢复等操作,较好的防止数据丢失 的手段。
3.支持通过Replication进行数据复制,通过master-slave机制,可以实时进行数据的同步复制,支持多级复制和增量复制,master-slave机制是Redis进行HA的重要手段。
4.单线程请求,所有命令串行执行,并发情况下不需要考虑数据一致性问题。
5.支持pub/sub消息订阅机制,可以用来进行消息订阅与通知。
6.支持简单的事务需求,但业界使用场景很少,并不成熟。
redis的缺点:
1.Redis只能使用单线程,性能受限于CPU性能,故单实例CPU最高才可能达到5-6wQPS每秒(取决于数据结构,数据大小以及服务器硬件性能,日常环境中QPS高峰大约在1-2w左右)。
2.支持简单的事务需求,但业界使用场景很少,并不成熟,既是优点也是缺点。
3.Redis在string类型上会消耗较多内存,可以使用dict(hash表)压缩存储以降低内存耗用。
二、什么是NoSql?
NoSql(Not-Only SQL),这个概念早起就有人提出,在09年的时候比较火。Nosql指的是非关系型数据库,而我们常用的都是关系型数据库。就像我们常用的mysql,sqlserver一样,这些数据库一般用来存储重要信息,应对普通的业务是没有问题的。但是,随着互联网的高速发展,传统的关系型数据库在应付超大规模,超大流量以及高并发的时候力不从心。而就在这个时候,Nosql得到的告诉的发展。
随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
Nosql特点:
1、易扩展,数据之间没有关系的。
2、大数据量,高性能。高性能读写非常灵活的。
3、灵活的数据模型。不需要事先对存储数据建立字段。
4、高可用。
简单概括:用于高并发读写、海量数据的高效率存储和访问、高可扩展性和高可用性。
Nosql主要主流产品
Redis(广泛应用),CouchDB,mongoDB,Cassandra等。Nosql中比较火的三个数据库Redis、Memchache、MongoDb。
非关系型型数据库的四大类是什么?
1、键值(Key-Value)存储数据库
相关产品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB 。
典型应用: 内容缓存,主要用于处理大量数据的高访问负载。
数据模型: 一系列键值对 。
优势: 快速查询 。
劣势: 存储的数据缺少结构化 。
2、列存储数据库
相关产品:Cassandra, HBase, Riak 。
典型应用:分布式的文件系统 。
数据模型:以列簇式存储,将同一列数据存在一起 。
优势:查找速度快,可扩展性强,更容易进行分布式扩展。
劣势:功能相对局限。
3、文档型数据库
相关产品:CouchDB、MongoDB 。
典型应用:Web应用(与Key-Value类似,Value是结构化的)。
数据模型: 一系列键值对 。
优势:数据结构要求不严格 。
劣势: 查询性能不高,而且缺乏统一的查询语法。
4、图形(Graph)数据库
相关数据库:Neo4J、InfoGrid、Infinite Graph 。
典型应用:社交网络 。
数据模型:图结构 。
优势:利用图结构相关算法。
劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案。