Redis介绍

1.1. Redis 简介

004108f5d2b369dff7732abaf887d869

​ Redis 是完全开源免费的,遵守BSD协议,是一个高性能(NOSQL)的key-value数据库,Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。(Vmware在资助着redis项目的开发和维护)

BSD是"Berkeley Software Distribution"的缩写,意思是"伯克利软件发行版"。

​ BSD开源协议是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。BSD代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。

1.2. Redis作者

redis的作者,他叫Salvatore Sanfilippo,来自意大利的西西里岛,现在居住在卡塔尼亚。之前就职于Pivotal公司。

1638602951(1)

作者博客地址是antirez.com,当然也可以去follow他的github,地址是http://github.com/antirez。

1.3. NoSQL介绍

​ NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题

1.4. NoSQL数据库的四大分类

​ 这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了。举例如:Tokyo Cabinet/Tyrant, Redis , Voldemort, Oracle BDB. 列存储数据库。

​ 这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。如:Cassandra, **HBase, ** Riak.

  • 文档型数据库

​ 文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可 以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。如:CouchDB,MongoDb . 国内也有文档型数据库SequoiaDB,已经开源。

  • 图形(Graph)数据库

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

  • 因此,我们总结NoSQL数据库在以下的这几种情况下比较适用:

​ 1、数据模型比较简单;

​ 2、需要灵活性更强的IT系统;

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

​ 4、不需要高度的数据一致性;

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

  • Redis 与其他 key - value 缓存产品有以下三个特点:

    • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

    • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

    • Redis支持数据的备份,集群等高可用功能。

1.3. 特点

  • 内存数据库,速度快,也支持数据的持久化
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供Lists、Hashes、Sets、Sorted Sets 等多种数据结构的存储。
  • Redis支持数据的备份(master-slave)与集群(分片存储),以及拥有哨兵监控机制。
  • 支持事务, 通过MULTI和EXEC指令包起来。

1.4. 优势

  • 性能极高 - Redis能读的速度是110000次/s,写的速度是81000次/s(QPS)。
  • 丰富的数据类型 - Redis支持Strings、Lists、Hashes、Sets、Sorted Sets 等数据类型操作。
  • 原子操作 - Redis的所有操作都是原子性的,同时Redis还支持几个操作合并后的原子性执行(事务)。
  • 丰富的特性 - Redis还支持 pulish/subscribe,通知,key 过期等特性。