Redis
1. NoSQL 的引言
NoSQL(Not Only SQL):意即不仅仅是SQL,泛指非关系型的数据库。NoSQL这个技术门类,早期就有人提出,发展至2009年趋势越发高涨。
RDBMS:关系型数据库,sql语句。
2. 为什么是 NoSQL
随着互联网网站的兴起,传统的关系型数据库在应付动态网站,特别是超大规模和高并发的纯动态网站已经显得力不从心,暴露了很多难以克服的问题。如商城网站中对商品数据频繁查询、对热搜商品的排行统计、订单超时问题、以及微信朋友圈的音频和视频存储等相关使用传统的关系型数据库就显得非常复杂,虽然能实现相应功能但是在性能上却显得不是那么乐观。NoSQL这个技术门类的出现,更好的解决了这些问题,它告诉了世界不仅仅是SQL。
3. NoSQL 的四大分类
3.1 键值(Key-Value)存储数据库
- 说明:
- 这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。
- 特点:
- Key-Value模型对于IT系统来说的优势在于简单、易部署。
- 但是如果DBA只对部分值进行查询或更新的时候,Key-Value就显得效率低下了。
- 相关产品:
- Tokyo Cabinet/Tyrant
- Redis
- SSDB
- Voldemort
- Oracle BDB
3.2 列存储数据库
- 说明:
- 这部分数据库通常是用来应对分布式存储的海量数据。
- 特点:
- 键仍然存在,但是它们的特点是指向了多个列,这些列是由列家族来安排的。
- 相关产品:
- Cassandra
- HBase
- Riak
3.3 文档数据库
- 说明:
- 文档数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似,该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档数据库可以看作是键值数据库的升级版,允许之间嵌套键值。而且文档数据库比键值数据库的查询效率更高。
- 特点:
- 以文档形式存储。
- 相关产品:
- MongoDB
- CouchDB
- MongoDB(5.x)
- 国内也有文档型数据库SequoiaDB,已经开源
3.4 图形(Graph)数据库
- 说明:
- 图形结构的数据库同其他行列以及刚性结构地SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。
- 特点:
- NoSQL数据库没有标准的查询语言,因此进行数据查询需要定制数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。
- 相关产品:
- Neo4J
- InfoGrid
- Infinite
- Graph
4. NoSQL 应用场景
- 数据模型比较简单。
- 需要灵活性更强的IT系统(系统设计灵活,性能要求比较高)。
- 对数据库性能要求较高。
- 不需要高度的数据一致性(NoSQL产品对于事务支持都不是特别良好)。
5. 什么是 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是一个内存型的数据库。
6. Redis 特点
- Redis是一个高性能Key-Value内存型数据库。
- Redis支持丰富的数据类型(String,List,Set,ZSet,Hash)。
- Redis支持持久化,内存数据持久化到硬盘中。
- Redis单进程,单线程,线程安全,效率高,Redis实现分布式锁。
7. Redis 在Linux下的安装及启动
-
准备环境:
vmware15.x+
centos7.x+ -
下载Redis源码包:
Redis官网 -
将Redis资料包上传到Linux中。
-
解压缩文件:
tar -zxvf redis-4.0.10.tar.gz
-
安装gcc:
yum install -y gcc
-
进入解压缩目录执行如下命令:
make MALLOC=libc
-
编译完成后执行如下命令:
make install PREFIX=/usr/redis
-
进入/usr/redis目录启动Redis服务:
./redis-server
-
Redis服务端口默认是6379。
-
进入bin目录执行客户端连接操作
./redis-cli -h localhost -p 6379
8. Redis 细节
-
Redis启动服务的细节:
注意:直接使用./redis-server
方式启动使用的是redis-server这个shell脚本中默认配置。 -
如何在启动redis时指定配置文件启动:
注意:默认在redis安装完成之后安装目录没有任何配置文件,需要在源码目录中复制redis.conf配置文件到安装目录。- 进入源码目录并复制配置文件:
cp redis.conf /usr/redis
- 进入/usr/redis查看配置文件。
- 进入/bin目录,加载配置启动:
./redis-server ../redis.conf
- 进入源码目录并复制配置文件:
-
Redis中库的概念:
库:database用来存放数据一个基本单元,一个库可以存放key-value键值对,Redis中每一个库都有一个唯一名称,编号从0开始。默认的库的个数:16个库,库的编号:0-15,默认使用是0号库。
切换库命令:select dbid
-
Redis清除库的指令:
清空当前库:
FLUSHDB
清空所有库:FLUSHALL
9. 开启 Redis 远程连接
注意:默认Redis服务器是没有开启远程连接,也就是默认拒绝所有远程客户端连接。
-
在redis安装目录下修改配置开启远程连接:
vim redis.conf
找到并修改:
bind 0.0.0.0 #允许一切客户端连接
-
修改配置之后在bin目录下以配置文件方式重启redis服务:
./redis-server ../redis.conf