Nosql 概述
单机MySQL的演进
Memcached(缓存)+mysql+垂直分离(读写分离)
网站80%的情况都是在读,每次都要查询数据库的就十分麻烦,所以为了减轻数据的压力,我们我可以用缓存来保证效率。
发展过程:优化数据结构和索引—->文件缓存(IO)—->memcached(以前很热门的技术)
分库分表+水平拆分+MySQL集群
什么是NoSQL
NoSQL=not only SQL 泛指非关系型数据库,随着web2.0互联网的诞生,传统的关系型数据库很难对付,尤其是超大规模的高并发社区,暴露出很多问题。NoSQL在当今大数据环境下发展的十分迅速,redis是发展最快的,而且需要必须掌握的一个技术。
NoSQL的特点
- 方便扩展(数据之间没有关系,很好扩展)
- 大数据量高性能(redis一秒可以写8万次,读11万次,NoSQL的缓存记录,是一种细粒级的缓存,性能比较高)
- 数据类型是多样型的(不需要事先设计数据库!随取随用)
大数据时代的3V
- 海量 Volume
- 多样 Variety
- 实时 Velocity
互联网需求3高(对程序的主要要求)
- 高并发
- 高可拓
- 高性能
NoSQL的四大分类
键值对:redis,Tair
文档型数据库(bson格式和json差不多
- MongoDB :是一种基于分布式文件存储的数据库,C++编写,主要用来处理大量的文档,是一个介于关系型数据库和非关系型 数据库中间的产品。所以它是非关系型数据库中功能最丰富的,最像关系型数据库的。
- ConthDB
列存储数据库
HBase
分布式文件系统
图形数据库(存储关系):Neo4j,infoGrid
对比分析:
Redis概述
redis是什么?
Redis:(Remote Dictionary Server ),即远程字典服务 ! 是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
免费开源,是当下最热门的NoSql技术之一,也被称为结构化数据库。
redis能干嘛?
- 内存存储,持久化,内存中是断电即失,所以说持久化很重要(rdb,aof)
- 效率高,可用于高速缓存
- 发布订阅系统
- 地图信息分析
- 计时器,计数器(浏览量)
- ……
特性
- 多样的数据类型
- 持久化
- 集群
- 事务
Redis(3.2.1) for Windows
1.解压文件
2.开启Redis,双击运行服务即可
3.使用Redis客户端来连接redis
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会进行后台启动,以便我们访问。
8.启动redis服务并测试连接
6379为redis的默认端口号
9.查看redis的进程是否开启
10.关闭redis服务
性能测试
redis-benchmark是一个压力测试工具(官方自带)!
使用方式:redis-benchmark 参数
#测试100个并发连接 100000个请求
redis-benchmark -h localhost -p 6379 -c 100 -n 100000
分析测试数据:
- Post link: http://sovzn.github.io/2021/01/24/%E5%88%9D%E8%AF%86Redis/
- Copyright Notice: All articles in this blog are licensed under unless otherwise stated.
若没有本文 Issue,您可以使用 Comment 模版新建。
GitHub Issues