守破离



【编程不良人】【Redis】【01】NoSQL+Redis介绍、安装

  • 1. NoSQL的引言
  • 2. 为什么是NoSQL
  • 3. NoSQL的四大分类
  • 3.1 键值(Key-Value)存储数据库
  • 3.2 列存储数据库
  • 3.3 文档型数据库
  • 3.4 图形(Graph)数据库
  • 4. NoSQL应用场景
  • 5. Redis的介绍
  • 5.1 什么是Redis
  • 5.2 Redis的特点
  • 6. Redis安装
  • 7. 配置Redis服务后台运行
  • 参考


1. NoSQL的引言

  • NoSQL(Not Only SQL ),意即不仅仅是SQL, 泛指非关系型的数据库,一般应与RDBMS配合使用。
  • 关系型数据库一般采用SQL语句来操纵;而NoSQL并不是使用SQL语句的,有其特定的语法。
  • NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。

2. 为什么是NoSQL

  • NoSQL这个技术门类,早期就有人提出,发展至2009年趋势越发高涨。
  • 随着互联网网站的兴起,传统的关系数据库在应对动态网站,特别是超大规模和高并发的纯动态网站已经显得力不从心,暴露了很多难以克服的问题。
  • 如商城网站中对商品数据频繁查询、对热搜商品的排行统计、订单超时问题、微信朋友圈音频视频存储等相关系统,使用传统的关系型数据库实现就显得非常复杂,虽然能实现相应功能但是在性能上却不是那么乐观。NoSQL这个技术门类的出现,更好的解决了这些问题,它告诉了世界,这个世界上不仅仅只有SQL。

3. NoSQL的四大分类

3.1 键值(Key-Value)存储数据库
  • 这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。
  • Key/value模型对于IT系统来说的优势在于简单、易部署。
  • 但是如果DBA只对部分值进行查询或更新的时候,Key-value就显得效率低下了。
  • 相关产品:
  • Redis (key-value)处于内存中 快
  • SSDB (key-value)存放于硬盘 慢
  • Oracle BDB
3.2 列存储数据库
  • 这部分数据库通常是用来应对分布式存储的海量数据。
  • 键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。
  • 相关产品:Cassandra、HBase、Riak.
3.3 文档型数据库
  • 文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似,该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON(BSON:Binary JSON)。文档型数据库可 以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高
  • 以文档形式存储
  • BSON/document:
{
    "string": "value",
    "integer": 10,
    "bool": true,
    "null": null,
    "array": [],
    "obj": {}
}
  • 相关产品:MongoDB、CouchDB、 MongoDb(4.x). 国内也有文档型数据库SequoiaDB,已经开源。
  • MongoDB(文档型NoSQL数据库)大有取代传统数据库的趋势,只不过由于文档型数据库对于事务等的支持目前还不太完善等原因,而一直未能取代传统的RDBMS。
  • 为什么要取代传统的RDBMS呢?因为传统的SQL型数据库太死板了,不易扩展。开发项目的第一件事就是要事先考虑清楚设计好库表,很麻烦,而且在项目开发过程中、谁也不知道客户还又有什么需求,所以这种单一的二维表数据格式也很不灵活。
3.4 图形(Graph)数据库
  • 图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。
  • 可以存储一些地图、社交网络等信息,用的不多
  • 相关产品:Neo4J、InfoGrid、 Infinite Graph、

4. NoSQL应用场景

NoSQL一般与RDBMS相辅相成

  • 数据模型比较简单
  • 需要灵活性更强的IT系统(系统设计灵活、业务场景多变)
  • 对数据库性能要求较高
  • 不需要高度的数据一致性(目前而言,所有NoSQL的产品对于事务的支持都不是特别良好)

5. Redis的介绍

5.1 什么是Redis
  • Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker.
  • Redis 开源 遵循BSD 基于内存数据存储,被用作为数据库、缓存、消息中间件
  • Redis作消息中间件是不太优秀的,主要作为数据库,用于缓存
  • nosqlBooster汉化包 nosql入门_nosql

  • Redis的数据都在内存中,因此它的特点是:读写快、断电立即消失
  • Redis有一个持久化机制,可以将内存中的数据定期的写入到磁盘,因此Redis可以看做是一个数据库
  • 总结: Redis是一个内存型的数据库
5.2 Redis的特点
  • Redis是一个高性能key/value内存型数据库
  • Redis支持丰富的数据类型
  • Redis支持持久化
  • Redis是单进程、单线程的,不支持并发,因此不存在线程安全问题,于是很多时候可以使用Redis解决分布式锁这样的问题。

6. Redis安装

本套教程基于redis-4.0.10

准备环境:

  • vmware15.x+
  • centos7.x+

下载Redis源码包,并将下载的Redis安装包上传到Linux中:

安装Redis:

  • yum install -y gcc(如果已经安装过了gcc就不需要再安装了)
  • 进入redis的解压缩目录执行如下命令:make MALLOC=libc
  • 编译完成后执行如下命令:make install PREFIX=/usr/local/redis

启动Redis服务:

nosqlBooster汉化包 nosql入门_Redis_02


nosqlBooster汉化包 nosql入门_redis_03

执行客户端连接操作:

nosqlBooster汉化包 nosql入门_数据库_04

简单使用:

nosqlBooster汉化包 nosql入门_Redis_05

nosqlBooster汉化包 nosql入门_Redis_06

7. 配置Redis服务后台运行

进入Redis的解压缩目录:/usr/local/redis-4.0.10,查看redis.conf

nosqlBooster汉化包 nosql入门_redis_07

发现有如下配置,可以发现Redis服务默认不会运行在后台而是像Tomcat那样运行在一个独立的命令行窗口:

nosqlBooster汉化包 nosql入门_nosqlBooster汉化包_08

所以修改配置:

nosqlBooster汉化包 nosql入门_nosql_09

启动Redis服务就会发现这时Redis可以在后台默默运行了:

nosqlBooster汉化包 nosql入门_数据库_10

关闭Redis服务:

nosqlBooster汉化包 nosql入门_Redis_11

参考

编程不良人: Redis实战教程.