持续学习&持续更新中…
守破离
【编程不良人】【Redis】【01】NoSQL+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作消息中间件是不太优秀的,主要作为数据库,用于缓存
-
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中:
- https://redis.io/
- redis-4.0.10.tar.gz
- 解压缩文件:
安装Redis:
yum install -y gcc
(如果已经安装过了gcc就不需要再安装了)- 进入redis的解压缩目录执行如下命令:
make MALLOC=libc
- 编译完成后执行如下命令:
make install PREFIX=/usr/local/redis
启动Redis服务:
执行客户端连接操作:
简单使用:
7. 配置Redis服务后台运行
进入Redis的解压缩目录:/usr/local/redis-4.0.10,查看redis.conf
发现有如下配置,可以发现Redis服务默认不会运行在后台而是像Tomcat那样运行在一个独立的命令行窗口:
所以修改配置:
启动Redis服务就会发现这时Redis可以在后台默默运行了:
关闭Redis服务:
参考
编程不良人: Redis实战教程.
本文完,感谢您的关注支持!