Redis是基于内存的数据库,是很受欢迎的一款nosql数据库,近来各大平台分享的技术平台都有关于redis的介绍,可见对于redis的重视程度,相比在面试的时候也会有不少关于redis的提及。
redis是开源的,基于BSD协议,其实在公司里面协议是很重要的一件事情,你使用的系统或者软件,你使用的时候如果是开源的话,你就不能在自己的公司里面把开源的软件糅合进你的产品里面,因为一旦你的产品将来做大了,就会有被投诉的风险,因为你有权使用开源软件,但是你无权将其作为商业版本投入发行,这一点是各位业内程序员朋友都知道的一件事情。
redis是高性能的,nosql,即 not only SQL ,它是基于键值对的,内存数据库,包括搭建集群都是保存在内存里面的,而且redis支持持久化,redis现在非常流行,和memcache相比,redis的使用更加广泛,因为redis支持数据结构类型丰富,有如字符串(strings),散列(hashes),列表(lists),集合(sets),有序集合(sorted sets)与范围查询,bitmaps,hyperloglogs和地理空间(geospatial)索引半径查询。
redis有丰富的支持主流语言的客户端,C,C++,Python,Erlang、R、C#/java、PHP、Objective-C、Perl、Ruby、Scala、Go、JavaScript.
memche可以做的事情,redis都可以做,其实目前世界上用redis做数据库做大的就是新浪了。
redis的官方网站:http://www.redis.io(现在比较流行的域名都是xxx.io)
主要的用途就在于缓存、数据库、消息中间件。
NoSQL分类
类型 | 主要产品 | 简介 |
KV存储 |
Redis Memcached |
使用key快速查到其value、Memcached支持string类型的value,Redis除string类型外还支持set、hash、sort set、list等类型。 |
文档存储 |
MongoDB cOUCHdb |
使用JSON或类JSON的BSON数据结构,存储内容为文档类型,能实现部分关系数据库的功能。 |
列存储 |
HBase Cassandra |
按照列进行数据存储,便于粗出结构化和半结构化数据,方便做数据压缩和针对某一列和某几列的数据查询。 |
图存储 |
Neo4J FlockDB |
图形关系的存储,能够很好弥补关系数据库在图形存储的不足。 |
对象存储 |
Bb4o Versant |
通过类似面向对象语言的方式操作数据库,通过对象的方式存取数据。 |
XML数据库 |
Berkeley DB XML BaseX |
高效存储XML数据,支持XML的内部支持查询语法,如XQuery、XPath |
公司里面不会全部的使用关系型数据库,也不会完全使用非关系型的数据库,而是整合使用。
下图是2017年1月全球数据库使用排名: