0x01_NoSQL简介
目前市场主流数据存储都是使用关系型数据库。每次操作关系型数据库时都是I/O操作,I/O操作是主要影响程序执行性能原因之一(因为要和硬盘进行I/O交互),连接数据库关闭数据库都是消耗性能的过程。尽量减少对数据库的操作(比如使用数据源),能够明显的提升程序运行效率。
针对上面的问题,市场上就出现了各种**NoSQL(Not Only SQL,不仅仅可以使用关系型数据库)**数据库,它们的宣传口号:不是什么样的场景都必须使用关系型数据库,一些特定的场景使用NoSQL数据库更好。
常见NoSQL数据库:
memcached :键值对,内存型数据库,所有数据都在内存中。(速度快,但是占内存,且易失性)
Redis: 和Memcached类似,还具备持久化能力。
HBase:以列作为存储。
MongoDB:以Document做存储。
HBase和MongoDB是在大数据领域运用非常广泛的NoSQL数据库。
0x02_Redis简介
Remote DIctionary Server(Redis)是一个由 Salvatore Sanfilippo写的key-value存储系统。
Redis是—个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于內存亦可持久化的日志型、Key-Value数据库,并提供多种语言的APl。它通常被称为数据结构服务器,因为值(value)可以是**字符串(String),哈希(Map),列表(List),集合(sets)和有序集合(sorted sets)**等类型。从2010年3月15日起,Redis的开发工作由 Mware主持。从2013年5月开始,Redis的开发由 Pivotal赞助。最新版本:6.2.6 ; 目前最新稳定版本为6.2
Redis是一个开源的高性能键值数据库。最热门的NoSq数据库之一,也被人们称为数据结构服务器。
最大的特点就是 :快
Redis默认端口:6379
sentinel.conf配置器端口为26379
注意:
Redis是以Key-Value形式进行存储的NoSQL数据库。
Redis是使用C语言进行编写的。
平时操作的数据都在内存中,效率特高,读的效率110000/s,写81000/s,所以多把Redis当做缓存工具使用。(Redis也可以当作注册中心、MQ消息队列来使用)
Redis以slot(槽)作为数据存储单元,每个槽中可以存储N多个键值对。Redis中固定具有16384个槽。理论上可以实现一个槽是一个Redis。每个向Redis存储数据的key都会进行crc16算法得出一个值后对16384取余就是这个key存放的slot位置。
同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。