Redis介绍:
Redis(全称:Remote Dictionary Server 远程字典服务)是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。
学Redis必须学会 1.基本数据类型。2.redis持久化。3.redis高可用,哨兵机制什么的(这些面试都会问到,不然凭什么说你会redis)
1.Nosql介绍:
NoSQL(Not only Sql 不仅仅是SQL),泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
2.Sql和Nosql的区别:
sql(关系型数据库):表与表之间建立关联关系(持久,可以写主外键,sql语句存放在硬盘上)。
mysql、oracle、sqlserver
nosql(非关系型数据库):数据与数据之间没有关联关系(缓存数据库,值存放在内存中---Java内置缓存)。
3.NoSQL数据库的四大分类(加红是同类中主流一些的):
键值(Key-Value)存储数据库:
这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了。[3] 举例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB.
列存储数据库:
这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。如:Cassandra, HBase, Riak.
文档型数据库:
文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可 以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。如:CouchDB, MongoDB(存储json格式). 国内也有文档型数据库SequoiaDB,已经开源。
图形(Graph)数据库:
图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。 如:Neo4J, InfoGrid, Infinite Graph.
因此,我们总结NoSQL数据库在以下的这几种情况下比较适用:1、数据模型比较简单;2、需要灵活性更强的IT系统;3、对数据库性能要求较高;4、不需要高度的数据一致性;5、对于给定key,比较容易映射复杂值的环境。
NoSQL数据库的四大分类表格分析
分类 | Examples举例 | 典型应用场景 | 数据模型 | 优点 | 缺点 |
键值(key-value) | Key 指向 Value 的键值对,通常用hash table来实现 | ||||
列存储数据库 | Cassandra, HBase, Riak | 分布式的文件系统 | 以列簇式存储,将同一列数据存在一起 | 查找速度快,可扩展性强,更容易进行分布式扩展 | 功能相对局限 |
文档型数据库 | CouchDB, MongoDb | Web应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容) | Key-Value对应的键值对,Value为结构化数据 | 数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构 | 查询性能不高,而且缺乏统一的查询语法。 |
图形(Graph)数据库 | Neo4J, InfoGrid, Infinite Graph | 社交网络,推荐系统等。专注于构建关系图谱 | 图结构 | 利用图结构相关算法。比如最短路径寻址,N度关系查找等 | 很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案。 <span color:#136ec2;"="" style="word-wrap: break-word; font-size: 1pt;"> |
Redis与其它 Key-value 缓存产品有以下三个特点:
- Redis支持数据的持久化,可以将内存中的数据保存到磁盘中,重启的时候·可以再次加载进行使用
- Redis不仅仅支持简单的key-value类型的数据库,同时还提供list,set,zset,hash等数据结构的存储
- Redis支持数据的备份,集群等高可用功能。
Redis的特点:
- 极高的性能:Redis读的速度是110000次/s,写的速度是81000次/s(百度百科) 。
- 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
- 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作合并后的原子性执行,要么成功执行,要么失败完全不执行。(事务)
- 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
Redis是一个简单的,高效的,分布式的,基于内存的缓存工具。
架设好服务器后,通过网络连接(类似数据库),提供Key-value式的缓存服务。
简单,是Redis突出的特色,可以保证核心功能的稳定和强大。
什么是Redis:nosql数据缓存数据库
为什么要用Redis:使用Redis能够减小数据库访问压力
Redis 基本类型: String、list、hash、set、zset(有序set)
Redis总结:
redis单个key存入512M大小
redis支持多种类型的数据结构(String,List, Hash,Set,Zset(sorted set --有序集合))
redis是单线程的,原子性的
redis可以持久化,因为使用了RDB和AOF机制
redis支持集群,而且redis支持库(0-15)16个库
redis还可以做做消息队列,比如聊天室
企业级开发中;可以用数据库、缓存(热点数据(经常会别查询,但不是经常被修改或者删除的数据))和消息中间件等大部分功能
缺点:因为是存在内存上的,所以耗内存厉害,不过对于服务器和现在的科技来说也是越来越无所谓了。