简介
在现在的互联网大潮中,NoSQL可谓家喻户晓,Redis作为NoSOL大军中极其重要的一员,是我们走向架构道路的一条必经之路。
Redis介绍
Redis 数据库是一个非关系型数据库,在正式学习Redis之前,我们先来了解关系型数据库与非关系型数据库的概念。
一、关系型数据库与非关系型数据库
数据库按照其结构可以分为关系型数据库与其他数据库,而这些其他数据库我们将其统称为非
关系型数据库。
1. 关系型数据库
关系型数据库是一个结构化的数据库,创建在关系模型基础上,一般面向记录。它借助于集合代数等数学概念和方法来处理数据库中的数据。关系模型指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。现实世界中,各种实体与实体之间的各种联系都可以用关系模型来表示。SQL(Structured Query Language,结构化查询语言)语句就是一种基于关系型数据库的语言,用于执行对关系型数据库中数据的检索和操作。
主流的关系型数据库包括Oracle、MySQL、SQL Server、Microsoft Access、DB2等。
2. 非关系型数据库
NoSQL(NoSQL=Not Only SQL),意思是“不仅仅是SQL”,是非关系型数据库的总称。主流的NoSQL 数据库有 Redis、MongBD、Hbase、CouhDB等。以上这些数据库,它们的存储方式、存储结构以及使用的场景都是完全不同的。所以我们认为它是一个非关系型数据库的集合,而不是像关系型数据库一样,是一个统称。换言之,主流的关系型数据库以外的数据库,都是非关系型的。NoSQL数据库凭借着其非关系型、分布式、开源和横向扩展等优势,被认为是下一代数据库产品。
二、Redis基础
1.Redis简介
Redis 是一个开源的,使用C语言编写,支持网络、可基于内存亦可持久化的日志型、key-value(键值对)数据库,是目前分布式架构中不可或缺的一环。
Redis 服务器程序是单进程模型,也就是在一台服务器上可以同时启动多个Redis进程,而Redis的实际处理速度则完全依靠于主进程的执行效率。若在服务器上只运行一个Redis进程,当多个客户端同时访问时,服务器的处理能力会有一定程度的下降;若在同一台服务器上开启多个Redis进程,Redis在提高并发处理能力的同时会给服务器的CPU造成很大压力。也就是说,在实际生产环境中,需要根据实际的需求来决定开启多少个Redis进程。若对高并发要求更高一些,可能会考虑在同一台服务器上开启多个进程:若CPU资源比较紧张,采用单进程即可。
Redis 具有以下几个优点。
- 具有极高的数据读写速度,数据读取的速度最高可达到110000次/s,数据写入速度最高可达到81000次/s。
- 支持丰富的数据类型,不仅仅支持简单的key-value数据类型,还支持Strings.Lists、Hashes、Sets 及Ordered Sets等数据类型操作。
- 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- 原子性,Redis所有操作都是原子性的。
- 支持数据备份,即master-salve模式的数据备份。
Redis作为基于内存运行的数据库,缓存是其较常应用的场景之一,除此之外,Redis常见应用场景还包括获取最新N个数据的操作,排行榜类应用、计数器应用、存储关系,实时分析系统、日
志记录等。
三、部署Redis
实验环境:虚拟机 6台 centos7.9、网卡NAT模式 数量 1、组件包Redis安装包
设备 | IP | 备注 |
Centos01 | 192.168.19.10 | Node1 |
Centos02 | 192.168.19.20 | Node2 |
Centos03 | 192.168.19.30 | Node3 |
Centos04 | 192.168.19.40 | Node4 |
Centos05 | 192.168.19.50 | Node5 |
Centos06 | 192.168.19.60 | Node6 |
初始配置
关闭防火墙
[root@love ~]# systemctl disable firewalld --now关闭Selinux
setenforce 0
[root@love ~]# sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
安装组件
[root@love ~]# yum -y install gcc vim net-tools
解压并安装Redis
[root@love ~]# tar zxf redis-7.2.4.tar.gz -C /usr/src/
[root@love ~]# cd /usr/src/redis-7.2.4/
[root@love redis-7.2.4]# make && make install
Redis操作命令关联系统
ln -s src/* /usr/sbin/
创建群集配置目录
[root@love redis-7.2.4]# mkdir cluster
[root@love redis-7.2.4]# mkdir cluster
[root@love redis-7.2.4]# mkdir cluster/6001
[root@love redis-7.2.4]# mkdir cluster/6002
[root@love redis-7.2.4]# mkdir cluster/6003
[root@love redis-7.2.4]# mkdir cluster/6004
[root@love redis-7.2.4]# mkdir cluster/6005
[root@love redis-7.2.4]# mkdir cluster/6006
[root@love redis-7.2.4]# cp redis.conf cluster/6001
[root@love redis-7.2.4]# cp redis.conf cluster/6002
[root@love redis-7.2.4]# cp redis.conf cluster/6003
[root@love redis-7.2.4]# cp redis.conf cluster/6004
[root@love redis-7.2.4]# cp redis.conf cluster/6005
[root@love redis-7.2.4]# cp redis.conf cluster/6006
分别修改6台Redis
[root@love redis-7.2.4]# vim cluster/6001/redis.conf
bind 192.168.160.51 #将127.0.0.1修改对应节点IP
protected-mode no #将yes 修改no关闭保护功能
port 6001 #将6379端口修改对应目录的
daemonize yes #将no 修改yes 开启守护进程
cluster-enabled yes #将 #删除 开启群集功能
cluster-config-file nodes-6379.conf #将 #删除 开启群集配置文件
cluster-node-timeout 15000 #将 #删除 开启群集节点超时
每个节点启动redis服务 不同节点变换目录
[root@love redis-7.2.4]# redis-server cluster/6001/redis.conf
创建群集 仅在node 1 操作
[root@love redis-7.2.4]# yum -y install ruby ruby-devel rpm-build
[root@love redis-7.2.4]# redis-cli --cluster create 192.168.19.10:6001 192.168.19.20:6002 192.168.19.30:6003 192.168.19.40:6004 192.168.19.50:6005 192.168.19.60:6006 --cluster-replicas 1
验证测试
[root@love redis-7.2.4]# redis-cli -h 192.168.19.10 -p 6001 -c
查看关系
[root@love redis-7.2.4]# cluster slots