NoSQL数据库
引入
-
技术分类
① 解决功能性的问题:Java、Jsp、RDBMS、Tomcat、HTML、Linux、JDBC、SVN
② 解决扩展性的问题:Struts、Spring、SpringMVC、Hibernate、Mybatis
③ 解决性能的问题:NoSQL、Java线程、Hadoop、Nginx、MQ、ElasticSearch
-
NoSQL的作用
① 缓解CPU压力
进行负载均衡时,可将session放入NoSQL中,解决访问问题。
② 缓解IO压力
可以将MySQL数据库中的频繁查询的数据放入NoSQL数据库中,NoSQL是内存级别的,可减少IO操作。
一、概述
-
定义
NoSQL:Not Only SQL,即表示不仅仅是SQL,泛指非关系型数据库。
-
特色
NoSQL不依赖业务逻辑方式存储,而已简单的key-value模式存储,大大的增加了数据库的扩展能力
① 不遵循SQL标准
② 不支持ACID
③ 拥有远超于SQL的性能
-
适用场景
① 对数据高并发的读写
② 海量数据的读写
③ 对数据高可扩展性的
④ 用不着SQL及用了SQL也不行的情况,请考虑用NoSQL
-
不适用的场景
① 需要事务支持
② 基于SQL的结构化查询存储,处理复杂的关系
二、常见的NoSQL数据库
-
Memcached
① 很早出现的NoSQL数据库
② 数据存在内存中,一般不持久化
③ 支持简单的key-value模式,支持类型单一
④ 一般是作为缓存数据库辅助持久化的数据库
-
Redis
① 几乎覆盖了Memcached的绝大部分功能
② 数据都在内存中,支持持久化,主要用作备份恢复
③ 处理支持简单的key-value,还支持多种数据结构的存储,比如list、set、hash、zset等
④ 一般作为缓存数据库辅助持久化的数据库
⑤ 这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。
⑥ 在此基础上,Redis支持各种不同方式的排序。
⑦ 区别的是Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。
⑧ 并且在此基础上实现了master-slave(主从)同步
-
MongoDB
① 高性能、开源、模式自由(schema free)的文档型数据库
② 数据都在内存中, 如果内存不足,把不常用的数据保存到硬盘
③ 虽然是key-value模式,但是对value(尤其是json)提供了丰富的查询功能
④ 支持二进制数据及大型对象
⑤ 可以根据数据的特点替代RDBMS ,成为独立的数据库。或者配合RDBMS,存储特定的数据
三、Redis安装
-
下载
-
将下载好的redis-7.0.4.tar.gz文件传输到Linux系统中的/opt文件夹中
-
在Linux系统中解压该安装文件
tar -zxvf redis-7.0.4.tar.gz
-
首先安装gcc
yum install gcc
-
进入解压后的安装包文件
① make
② make install
四、启动Redis
-
前台打开Redis
// 1.进入bin文件夹 cd /usr/local/bin // 2.前台进入Redis redis-server
-
后台启动Redis
① 复制/opt下redis安装包中的
② 更改etc文件夹中的redis.conf的配置,使redis可以通过后台启动
// daemonize的默认值是no daemonize yes
③ 进入/usr/local/bin中,执行如下命令
redis-server /etc/redis.conf
④ 终端展示
五、Redis核心特色
-
端口号6379
端口号来源于非洲女明星Merz名字对应的手机键盘数字
-
本身自带16个数据库
从0开始,默认使用0号数据库,切换到6号数据库时,使用 “select 6” 命令即可
-
采用单线程+多路IO复用技术
多路复用是指使用一个线程来检查多个文件描述符(Socket)的就绪状态,比如调用select和poll函数,传入多个文件描述符,如果有一个文件描述符就绪,则返回,否则阻塞直到超时。得到就绪状态后进行真正的操作可以在同一个线程里执行,也可以启动线程执行(比如使用线程池)