NOSQL-Redis简介

NOSQL简介

NoSQL泛指非关系型的数据库,NoSQL数据库的四大分类:

键值(Key-Value)存储数据库:这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指指向特定的数据。如Redis,Voldemort,Oracle BDB

列存储数据库:这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。如Hbase,Riak

文档型数据库:该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。如:CouchDB,MongoDB

图形数据库:图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上、NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。如:Neo4J,InfoGrid,Infinite Graph。

非关系型数据库特点

1、数据模型比较简单;

2、需要灵活性更强的应用系统;

3、对数据库性能要求较高;

4、不需要高度的数据一致性(ACID);

5、对于给定key,比较容易映射复杂值的环境

Redis简介

 是以key-value形式存储,和传统的关系型数据库不一样,不一定遵循传统数据库的一些基本要求(非关系型的、分布式的、开源的、水平可扩展的)

优点:对数据高并发读写

           对海量数据的高效率存储和访问

           对数据的可扩展性和高可用性

缺点:redis(ACID处理非常简单)

           无法做到太复杂的关系数据库模型

Redis是以key-value store存储,data structure service数据结构服务器。键可以包含:(String)字符串,哈希,(list)集合,(zset)有序集合。这些数据集合都支持push/pop、add/remove及取交集和并集以及更丰富的操作,redis都支持各种不同的方式排序,为了保证效率,数据都是缓存在内存中,它也可以周期性的把更新的数据写入磁盘或者把修改操作写入追加到文件里(RDB),AOF能记录一些用户操作增删改日志,持久化操作保证数据不丢失。

Redis提供三种模式:主从,哨兵,集群

主从模式:假如三台服务器节点一主两次,主节点支持读写,从节点支持读,这种的缺点就是主节点挂了就完了。

哨兵模式:就是在主从模式上再加个服务器节点来监控节点的情况,一旦主节点挂了它会在选举主节点。

集群模式:集群模式就是可扩展的可以随意加服务器节点,你要是感觉有点多余还可以去掉节点。

关于Redis有时候会慢?

这是保证数据的可靠性启用AOF,所以记一条写一条日志会导致它慢(读没事),这种情况在Redis2.0是可以调jvm参数的,但是在3.0以后就不让调整了,这种情况只能是多加几台主节点。

你对互联网项目高并发的解决思路?

一般面试官的技术如果还不错的话,那他想听的答案不仅仅是一个技术点,因为解决高并发不是一个技术点能解决的,是整个从前端到后台业务处理再到数据库的。比如前端入口处加Nginx负载均衡,根据业务在做细分,完之后继续走走到代码处,无非就是加些容器加些判断。完之后就说到Redis了,Redis主要的目的是什么呢?就是给数据库降压嘛,比如说你原先数据库里存储1g,那现在你可以只存700MB完之后缓存在存300MB,这样做的目的就是用户访问数据库层就可以直接往Redis走,应为它是内存级别的所以效率很高,当然也是根据自己的业务来用的。

 

你可能感兴趣的:(NOSQL,NOSQL)