Nosql 概述

单机MySQL的演进

Memcached(缓存)+mysql+垂直分离(读写分离)

网站80%的情况都是在读,每次都要查询数据库的就十分麻烦,所以为了减轻数据的压力,我们我可以用缓存来保证效率。

发展过程:优化数据结构和索引—->文件缓存(IO)—->memcached(以前很热门的技术)

img

分库分表+水平拆分+MySQL集群

img点击并拖拽以移动

什么是NoSQL

NoSQL=not only SQL 泛指非关系型数据库,随着web2.0互联网的诞生,传统的关系型数据库很难对付,尤其是超大规模的高并发社区,暴露出很多问题。NoSQL在当今大数据环境下发展的十分迅速,redis是发展最快的,而且需要必须掌握的一个技术。

NoSQL的特点

  1. 方便扩展(数据之间没有关系,很好扩展)
  2. 大数据量高性能(redis一秒可以写8万次,读11万次,NoSQL的缓存记录,是一种细粒级的缓存,性能比较高)
  3. 数据类型是多样型的(不需要事先设计数据库!随取随用)

大数据时代的3V

  • 海量 Volume
  • 多样 Variety
  • 实时 Velocity

互联网需求3高(对程序的主要要求)

  • 高并发
  • 高可拓
  • 高性能

NoSQL的四大分类

  • 键值对:redis,Tair

  • 文档型数据库(bson格式和json差不多

    • MongoDB :是一种基于分布式文件存储的数据库,C++编写,主要用来处理大量的文档,是一个介于关系型数据库和非关系型 数据库中间的产品。所以它是非关系型数据库中功能最丰富的,最像关系型数据库的。
    • ConthDB
  • 列存储数据库

    • HBase

    • 分布式文件系统

  • 图形数据库(存储关系):Neo4j,infoGrid

    对比分析:

img点击并拖拽以移动

Redis概述

redis是什么?

Redis:(Remote Dictionary Server ),即远程字典服务 ! 是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

免费开源,是当下最热门的NoSql技术之一,也被称为结构化数据库。

redis能干嘛?

  1. 内存存储,持久化,内存中是断电即失,所以说持久化很重要(rdb,aof)
  2. 效率高,可用于高速缓存
  3. 发布订阅系统
  4. 地图信息分析
  5. 计时器,计数器(浏览量)
  6. ……

特性

  1. 多样的数据类型
  2. 持久化
  3. 集群
  4. 事务

Redis(3.2.1) for Windows

1.解压文件

2.开启Redis,双击运行服务即可

img点击并拖拽以移动

img点击并拖拽以移动

3.使用Redis客户端来连接redis

img点击并拖拽以移动

img点击并拖拽以移动

windows版本比Linux版本低很多,而且官网已经没有window版本了,推荐使用linux版🤣🤣

Redis for Linux

1.在官网下载安装包:https://redis.io/ 上传至服务器

将下载的redis-6.0.10.tar.gz上传至服务器的/home/files下

2.解压Redis安装包,程序文件一般放在/opt目录下

将redis-6.0.10.tar.gz移动到/opt下并解压:

[root@shiyaochang files]# mv redis-6.0.10.tar.gz /opt
[root@shiyaochang files]# cd /opt
[root@shiyaochang opt]# ll
total 2224
drwx--x--x 4 root root    4096 Jan 29 18:37 containerd
-rw-r--r-- 1 root root 2271970 Jan 31 19:49 redis-6.0.10.tar.gz
[root@shiyaochang opt]# tar -zxvf redis-6.0.10.tar.gz  #解压
[root@shiyaochang opt]# ls
containerd  redis-6.0.10  redis-6.0.10.tar.gz
[root@shiyaochang opt]# 

3.进入解压后的文件、我们可以看到redis的配置文件redis.config。

[root@shiyaochang opt]# cd redis-6.0.10
[root@shiyaochang redis-6.0.10]# ls
00-RELEASENOTES  COPYING  Makefile   redis.conf       runtest-moduleapi  src     utils
BUGS             deps     MANIFESTO  runtest          runtest-sentinel   tests
CONTRIBUTING     INSTALL  README.md  runtest-cluster  sentinel.conf      TLS.md
[root@shiyaochang redis-6.0.10]# 

4.安装gcc环境:

安装gcc:

[root@shiyaochang redis-6.0.10]# yum -y install gcc-c++

查看gcc版本:

[root@shiyaochang redis-6.0.10]# gcc -v
gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)  #当前版本

执行make命令来配置文件:

[root@shiyaochang redis-6.0.10]# make

注意:若执行make命令时报错:如:

make[1]: *** [server.o] Error 1
make[1]: Leaving directory `/opt/redis-6.0.10/src'
make: *** [all] Error 2

这是由于gcc的版本太低,安装6.0以上的redis需要gcc版本5.3以上,升级gcc方法如下:

升级到最新版gcc:

[root@localhost redis-6.0.1]# yum -y install centos-release-scl  # 升级到9.3版本
[root@localhost redis-6.0.1]# yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
[root@localhost redis-6.0.1]# scl enable devtoolset-9 bash
以上为临时启用,如果要长期使用gcc 9.3的话:
[root@localhost redis-6.0.1]# echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile

在查看gcc版本:

[root@shiyaochang redis-6.0.10]# gcc -v
gcc version 9.3.1 20200408 (Red Hat 9.3.1-2) (GCC)  #当前版本

再次执行make进行编译:

[root@shiyaochang redis-6.0.10]# make

编译成功会出现:

Hint: It’s a good idea to run ‘make test’ ;)

5.redis的默认安装路径:/usr/local/bin

在/usr/local/bin目录下我们可以看见redis的命令:

[root@shiyaochang /]# cd usr/local/bin
[root@shiyaochang bin]# ls
libmcrypt-config  mdecrypt         redis-check-aof  redis-cli       redis-server
mcrypt            redis-benchmark  redis-check-rdb  redis-sentinel
[root@shiyaochang bin]# 

6.将redis的配置文件复制到/usr/local/bin下

[root@shiyaochang bin]# mkdir sconfig                                    #创建目录sconfig
[root@shiyaochang bin]#  cp /opt/redis-6.0.10/redis.conf sconfig         #将配置文件复制在scongif下
[root@shiyaochang bin]# cd sconfig
[root@shiyaochang sconfig]# ls
redis.conf                                                               #以后就使用这个配置文件来启动redis

7.修改redis启动方式

redis默认不是后台启动的

修改配置文件:vim打开刚才复制的redis.config,修改以下内容后保存退出,改为yes后redis会进行后台启动,以便我们访问。

img点击并拖拽以移动

8.启动redis服务并测试连接

img点击并拖拽以移动

6379为redis的默认端口号

img点击并拖拽以移动

9.查看redis的进程是否开启

img点击并拖拽以移动

10.关闭redis服务

img点击并拖拽以移动

img点击并拖拽以移动

性能测试

redis-benchmark是一个压力测试工具(官方自带)!

使用方式:redis-benchmark 参数

点击并拖拽以移动 img

#测试100个并发连接   100000个请求
redis-benchmark -h localhost -p 6379 -c 100 -n 100000

img点击并拖拽以移动

分析测试数据:

img

点击并拖拽以移动